|
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件 ★ 免费下载 ★ ★ 使用帮助★
- Sub HuiZong()
- Dim data, i&, arr(), dicw, dich, k&, w&
- data = Worksheets("数据源").UsedRange
- ReDim arr(1 To UBound(data), 1 To 100)
- Set dicw = CreateObject("Scripting.Dictionary")
- Set dich = CreateObject("Scripting.Dictionary")
- For i = 4 To UBound(data)
- If data(i, 2) <> "" And Round(data(i, 20), 2) <> 0 Then
- If Not dich.exists(data(i, 2) & "|" & data(i, 10) & "|" & data(i, 11) & "|" & data(i, 14) & "|" & data(i, 15)) Then
- k = k + 1
- dich(data(i, 2) & "|" & data(i, 10) & "|" & data(i, 11) & "|" & data(i, 14) & "|" & data(i, 15)) = k
- End If
-
- If Not dicw.exists(data(i, 8) & "") Then
- w = w + 1
- dicw(data(i, 8) & "") = w
- End If
- arr(dich(data(i, 2) & "|" & data(i, 10) & "|" & data(i, 11) & "|" & data(i, 14) & "|" & data(i, 15)), dicw(data(i, 8) & "")) = _
- arr(dich(data(i, 2) & "|" & data(i, 10) & "|" & data(i, 11) & "|" & data(i, 14) & "|" & data(i, 15)), dicw(data(i, 8) & "")) + data(i, 20)
- End If
- Next i
- Application.DisplayAlerts = False
- With Worksheets("汇总")
- .[G2].Resize(1, w) = dicw.keys
- .[G3].Resize(k, w) = arr
- .[A3].Resize(k, 1).FormulaR1C1 = "=row(R[-2]C)"
- .[B3].Resize(k, 1) = Application.Transpose(dich.keys)
- .[B3].Resize(k, 1).TextToColumns other:=True, otherchar:="|"
- With .Sort
- .SortFields.Clear
- .SortFields.Add Key:=Worksheets("汇总").[G2].Resize(1, w)
- .SetRange Worksheets("汇总").[G2].Resize(k + 1, w)
- .Orientation = xlLeftToRight
- .SortMethod = xlPinYin
- .Apply
- .SortFields.Clear
- .SortFields.Add Key:=Worksheets("汇总").[B2].Resize(k + 1, 1)
- .SortFields.Add Key:=Worksheets("汇总").[C2].Resize(k + 1, 1)
- .SortFields.Add Key:=Worksheets("汇总").[F2].Resize(k + 1, 1)
- .SetRange Worksheets("汇总").[B2].Resize(k + 1, w + 5)
- .Header = xlYes
- .Orientation = xlTopToBottom
- .SortMethod = xlPinYin
- .Apply
- End With
- End With
- Application.DisplayAlerts = True
- End Sub
复制代码 |
|