vba字典條件求和原理?
1、將多個條件合并,用 & 鏈接在一起,作為一個key放進字典
多條件變單條件
2、然后套路就是 :字典標記行號,單條件多列求和。
代碼:
Sub 多表求和()
Dim arr, brr(1 To 10000, 1 To 6), sht As Worksheet, d As Object
Set d = CreateObject('scripting.dictionary')
'遍歷所有工作表
For Each sht In Worksheets
'如果工作表不是“匯總”工作表
If sht.Name <> '匯總' Then
'將要求和的數據放進數組arr
arr = sht.[a1].CurrentRegion
'遍歷數組元素
For i = 2 To UBound(arr)
'將條件1、2、3合并組成唯一的key放進字典
okey = arr(i, 1) & arr(i, 2) & arr(i, 3)
'每個okey的第一條數據,放在新的數組brr中
'并標記okey在數組brr中的行
If Not d.exists(okey) Then
k = k 1 '計數
d(okey) = k '字典標記行
For j = 1 To 6 '寫入每個okey第一條數據
brr(k, j) = arr(i, j)
Next j
Else
'okey第2條數據起,開始進行累加計算
' r 返回okey在數組brr中的行號
r = d(okey)
brr(r, 4) = brr(r, 4) arr(i, 4) '求和1累加
brr(r, 5) = brr(r, 5) arr(i, 5) '求和2累加
brr(r, 6) = brr(r, 6) arr(i, 6) '求和3累加
End If
Next i
End If
Next
'輸出求和數據