Sub test250413()
Dim i, j, k, m, n As Integer, ar, br, cr As Variant
With Sheets("应缴款")
ar = .Range("a1:c" & .[a1].End(xlDown).Row)
cr = .[d1].Resize(UBound(ar), 100)
End With
br = Sheets("缴款明细").[a1].CurrentRegion
m = 2: n = 2: j = 1
For i = 1 To 1000
If ar(m, 3) > br(n, 3) Then
cr(m, 3 * j - 2) = br(n, 2): cr(m, 3 * j - 1) = br(n, 3): cr(m, 3 * j) = DateDiff("d", ar(m, 2), br(n, 2))
ar(m, 3) = ar(m, 3) - br(n, 3): n = n + 1: j = j + 1
Else
If ar(m, 3) = br(n, 3) Then
cr(m, 3 * j - 2) = br(n, 2): cr(m, 3 * j - 1) = br(n, 3): cr(m, 3 * j) = DateDiff("d", ar(m, 2), br(n, 2))
m = m + 1: n = n + 1: j = 1
Else
cr(m, 3 * j - 2) = br(n, 2): cr(m, 3 * j - 1) = ar(m, 3): cr(m, 3 * j) = DateDiff("d", ar(m, 2), br(n, 2))
br(n, 3) = br(n, 3) - ar(m, 3): m = m + 1: j = 1
End If
End If
If m > UBound(ar) Or n > UBound(br) Then
Exit For
End If
Next
Sheets("应缴款").[d1].Resize(UBound(ar), 50).ClearContents
Sheets("应缴款").[d1].Resize(UBound(ar), 50) = cr
MsgBox "ok"
End Sub
|