Excel VBA代码翻译

谁能帮翻一下这段VBA
Sub test()
Dim arr, brr
Dim d As Object
Dim k%, i%, m%, str$, str1$

arr = Sheets("sheet1").Range("a1").CurrentRegion
brr = Sheets("sheet2").Range("a2").CurrentRegion
Set d = CreateObject("scripting.dictionary")

For k = 2 To UBound(arr)
str = arr(k, 1) & arr(k, 3) & arr(k, 2)
If Not d.exists(str) Then
d(str) = arr(k, 4)
Else
d(str) = d(str) + arr(k, 4)
End If
Next k
For i = 2 To UBound(brr)
For m = 3 To UBound(brr, 2)
str1 = brr(i, 1) & brr(i, 2) & brr(1, m)
brr(i, m) = d(str1)
Next m
Next i

Sheets("sheet2").Range("a2").Resize(UBound(brr), UBound(brr, 2)) = brr
End Sub

这代码出来是透视表或者 Sumifs 公式的效果, 直接一个公式就搞定的事 还写这么复杂

你这人 也是, 一毛不拔 还 找人翻译

Sub test()
Dim arr, brr
Dim d As Object
Dim k%, i%, m%, str$, str1$

arr = Sheets("sheet1").Range("a1").CurrentRegion 'Sheet1数据存入数组
brr = Sheets("sheet2").Range("a2").CurrentRegion 'Sheet2  数据存入数组
Set d = CreateObject("scripting.dictionary") '创建字典对象

For k = 2 To UBound(arr)
str = arr(k, 1) & arr(k, 3) & arr(k, 2) 'sheet1 A列 C 列 B列每行内容合并
If Not d.exists(str) Then
d(str) = arr(k, 4) '这里写的是 废话多余
Else
d(str) = d(str) + arr(k, 4) '对A 列C 列B列 合并后的字符串 对应的第4列数字 求和
End If
Next k

For i = 2 To UBound(brr)  'Sheet2 的第2行开始 到最后一行
For m = 3 To UBound(brr, 2) 'sheet2的第3列 开始到最后一列,列数为m
str1 = brr(i, 1) & brr(i, 2) & brr(1, m) '合并内容为 A列+B列+ 第一行横向的m列
brr(i, m) = d(str1)  '之前对应字符 求和的数据写入 数组对应位置
Next m
Next i

Sheets("sheet2").Range("a2").Resize(UBound(brr), UBound(brr, 2)) = brr'输出求和结果
End Sub

温馨提示:答案为网友推荐,仅供参考
相似回答