|
Option Explicit
Sub test()
Dim Dic, Count, B()
Set Dic = CreateObject("scripting.dictionary")
ReDim B(1 To 10 ^ 4, 1 To 4)
Call Compare(Dic, Count, True, [A3:D8].Value, B)
Call Compare(Dic, Count, False, [F3:I8].Value, B)
[L3:O65536] = ""
[L3].Resize(Count, UBound(B, 2)) = B
End Sub
Sub Compare(Dic, Count, bol, A, B)
Dim i, j, temp
For i = 1 To UBound(A)
If A(i, 4) <> "" Then
temp = A(i, 1) & A(i, 2) & A(i, 3)
If Dic.exists(temp) Then
'已存在,第4列相减
B(Dic(temp), 4) = B(Dic(temp), 4) - A(i, 4)
Else
'不存在,赋值
If bol Then
Count = Count + 1: Dic(temp) = Count
For j = 1 To UBound(A, 2)
B(Count, j) = A(i, j)
Next j
End If
End If
End If
Next i
End Sub
VBA用数组对比筛选3.rar
(19.05 KB, 下载次数: 16)
|
|