这是一个使用变体数组来收集结果的示例,所以会很快。
假设您已经预先构建了结果表项目和编号标题
Sub Demo()
'Call FillTable with parameters
' Top Left Cell of Source Data range, including headers
' Top Left Cell of Destination Table range, including headers
' Column to match in Source
' Column to return from Source
FillTable Worksheets("Data").Range("A1"), Worksheets("Final").Range("A2"), 4, 3
End Sub
Sub FillTable(rSrc As Range, rTable As Range, MatchCol As Long, QtyCol As Long)
Dim vSrc As Variant, vTable As Variant
Dim Items As Variant, Dates As Variant
Dim rw As Long, cl As Long
Set rSrc = Range(rSrc.Offset(1, 0), rSrc.End(xlDown)).Resize(, Application.Max(MatchCol, QtyCol))
Set rTable = Range(rTable.End(xlToRight).Offset(1, 0), rTable.End(xlDown).Offset(0, 1))
vSrc = rSrc.Value2
vTable = rTable.Value2
Items = rTable.Columns(0).Value2
Dates = rTable.Rows(0).Value2
For cl = 1 To UBound(vTable, 2)
For rw = 1 To UBound(vTable, 1)
With Application
vTable(rw, cl) = .IfNa(.Index(rSrc.Columns(QtyCol), .Match(Items(rw, 1) & Dates(1, cl), rSrc.Columns(MatchCol), 0)), vbNullString)
End With
Next rw, cl
rTable = vTable
End Sub