|
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
参与一下啊......
- Private Sub CommandButton1_Click()
-
- Dim i, j, arr, brr
- Dim dic, d As Object
- Dim key, k
- Set dic = CreateObject("scripting.dictionary")
- Set d = CreateObject("scripting.dictionary")
-
- arr = Sheet1.Range("A1").CurrentRegion
- For i = 2 To UBound(arr)
- k = arr(i, 1)
- If Not dic.exists(k) Then Set dic(k) = CreateObject("Scripting.Dictionary")
- For j = 2 To UBound(arr, 2)
- key = arr(1, j)
- If Not dic(k).exists(key) Then
- dic(k)(key) = arr(k, j)
- Else
- dic(k)(key) = arr(k, j) + dic(k)(key)
- End If
- d(key) = ""
- Next
- Next
-
- arr = Sheet2.Range("A1").CurrentRegion
- For i = 2 To UBound(arr)
- k = arr(i, 1)
- If Not dic.exists(k) Then Set dic(k) = CreateObject("Scripting.Dictionary")
- For j = 2 To UBound(arr, 2)
- key = arr(1, j)
- If Not dic(k).exists(key) Then
- dic(k)(key) = arr(k, j)
- Else
- dic(k)(key) = arr(k, j) + dic(k)(key)
- End If
- d(key) = ""
- Next
- Next
-
- ReDim arr(0 To dic.Count, 0 To d.Count)
- i = 0: j = 0
- For Each k In dic.keys
- i = i + 1
- arr(i, 0) = k
- For Each key In d.keys
- If i = 1 Then j = j + 1: arr(0, j) = key
- If dic(k).exists(key) Then arr(i, j) = dic(k)(key)
- Next
- Next
-
- Sheet1.Range("A1").Resize(UBound(arr) + 1, UBound(arr, 2) + 1) = arr
- End Sub
复制代码 |
|