Sub test250415()
Dim i, j, k, m, n, p As Integer, d1, d2 As Object, ar, br, cr As Variant
Set d1 = CreateObject("scripting.dictionary")
Set d2 = CreateObject("scripting.dictionary")
ar = Sheets("领料明细").[a1].CurrentRegion
For i = UBound(ar) To 2 Step -1
If ar(i, 1) <> "" Then
d1(ar(i, 1)) = 1 + d1(ar(i, 1)): d2(ar(i, 1) & d1(ar(i, 1))) = ar(i, 2)
End If
Next
br = Sheets("所有商品").UsedRange
For j = 7 To UBound(br, 2)
If InStr(br(1, j), "最近") > 0 Then
m = WorksheetFunction.Find("第", br(1, j)): n = WorksheetFunction.Find("次", br(1, j))
p = Val(Mid(br(1, j), m + 1, n - m - 1))
For i = 2 To UBound(br)
br(i, j) = d2(br(i, 1) & p)
Next
End If
Next
For i = 2 To UBound(br)
br(i, 5) = WorksheetFunction.Max(DateDiff("d", br(i, 7), br(i, 10)), 0): br(i, 6) = WorksheetFunction.Max(br(i, 5) - 1, 0)
br(i, 8) = WorksheetFunction.Max(DateDiff("d", br(i, 10), br(i, 13)), 0): br(i, 9) = WorksheetFunction.Max(br(i, 8) - 1, 0)
br(i, 11) = WorksheetFunction.Max(DateDiff("d", br(i, 13), br(i, 15)), 0): br(i, 12) = WorksheetFunction.Max(br(i, 11) - 1, 0)
For j = 14 To 24 Step 2
br(i, j) = WorksheetFunction.Max(DateDiff("d", br(i, j + 1), br(i, j + 3)) - 1, 0)
Next
Next
Sheets("所有商品").[a1].Resize(UBound(br), UBound(br, 2)) = br
MsgBox "ok"
End Sub
|