|
发表于 2015-12-14 00:21
|
显示全部楼层
本楼为最佳答案
本帖最后由 sry660 于 2015-12-14 00:28 编辑
- Sub 提取不重复值并汇总()
- Dim arr
- Sheets(1).Activate
- arr = [a1].CurrentRegion
- Dim d, d1, x$, y$, i&
- Set d = CreateObject("scripting.dictionary")
- Set d1 = CreateObject("scripting.dictionary")
- For i = 2 To UBound(arr)
- x = arr(i, 1): y = arr(i, 2)
- d1(x) = ""
- If Not d.exists(x) Then Set d(x) = CreateObject("scripting.dictionary")
- d(x)(y) = d(x)(y) + arr(i, 3)
- Next
- Sheets(2).[a:h].ClearContents
- Sheets(2).[a1].Resize(1, 4) = Array("客户", "百事", "可口", "芬达")
- Sheets(2).[a2].Resize(d1.Count, 1) = Application.Transpose(d1.keys)
- Dim brr, j&, k&
- brr = Sheets(2).[a1].CurrentRegion
- For j = 2 To UBound(brr)
- For k = 2 To UBound(brr, 2)
- If d(brr(j, 1)).exists(brr(1, k)) Then
- brr(j, k) = d(brr(j, 1))(brr(1, k))
- Else
- brr(j, k) = 0
- End If
- Next k
- Next j
- Sheets(2).[a1].CurrentRegion = brr
- Set d = Nothing
- Set d1 = Nothing
- Erase arr, brr
- Sheets(2).Select
- [a:d].EntireColumn.AutoFit
- End Sub
复制代码 |
|