|
|
Option Explicit
Sub test2()
Dim ar, br, vResult, i&, j&, r&, m&, n&
Application.ScreenUpdating = False
ar = Range("A1").CurrentRegion.Value
For i = 2 To UBound(ar)
m = m + ar(i, 2)
Next i
br = Range("D1").CurrentRegion.Value
For i = 2 To UBound(br)
n = n + br(i, 3)
Next i
If m <> n Then
Application.ScreenUpdating = True
MsgBox "数据有误,请检查!": Exit Sub
End If
ReDim vResult(m, 1 To 4)
vResult(0, 1) = "日期": vResult(0, 2) = "姓名": vResult(0, 3) = "金额"
For i = 2 To UBound(br)
For j = 1 To br(i, 3)
r = r + 1
vResult(r, 2) = br(i, 1): vResult(r, 3) = br(i, 2)
Next j
Next i
r = 0
Do
For i = 2 To UBound(ar)
If ar(i, 2) > 0 Then
r = r + 1
vResult(r, 1) = ar(i, 1)
ar(i, 2) = ar(i, 2) - 1
m = m - 1
End If
Next i
Loop Until m = 0
Range("M1").CurrentRegion.Clear
With Range("M1").Resize(UBound(vResult) + 1, 3)
.CurrentRegion.Clear
.Value = vResult
.Columns(1).NumberFormatLocal = "yyyy-m-d"
End With
Application.ScreenUpdating = True
Beep
End Sub
|
|