|
“到货总汇”工作表的排列方式不太符合数据库要求,用SQL区要若干个子区域联合查询
用字典吧,速度比SQL会更快:
Sub Macro1()
Dim arr, brr(), d As Object, i&, j&, lr&
Set d = CreateObject("scripting.dictionary")
arr = Range("D3:D" & Range("D65536").End(xlUp).Row)
For i = 1 To UBound(arr)
d(arr(i, 1)) = i
Next
ReDim brr(1 To i - 1, 1 To 2)
With Sheets("到货总汇")
arr = .[a1].Resize(.Cells(Cells.Rows.Count, 1).End(xlUp).Row, .Cells(2, Cells.Columns.Count).End(xlToLeft).Column)
End With
lr = UBound(arr)
For j = 1 To UBound(arr, 2) Step 5
For i = 3 To lr
If d.Exists(arr(i, j)) Then
brr(d(arr(i, j)), 1) = arr(i, j + 1)
brr(d(arr(i, j)), 2) = arr(i, j + 2)
End If
Next
Next
Range("b3:c" & Range("b65536").End(xlUp).Row + 3).ClearContents
[b3].Resize(UBound(brr), 2) = brr
End Sub |
|