试试{:2912:}
P.S. 生成的数据没有排序{:2312:}
- Sub hz()
- Dim dr As Object, dc As Object
- Dim ar, br(1 To 10000, 1 To 1000)
- Dim sr As String
- Dim i As Long, j As Long, k As Long, m As Long, n As Long
- Dim rw As Long, cl As Long
- Dim hj As Double
- br(1, 1) = "客户": br(1, 2) = "品名"
- j = 1: k = 2
- Set dr = CreateObject("scripting.dictionary")
- Set dc = CreateObject("scripting.dictionary")
- ar = Cells(1, 1).CurrentRegion
- For i = 2 To UBound(ar)
- sr = ar(i, 2) & vbTab & ar(i, 3)
- If Not dr.exists(sr) Then
- j = j + 1
- dr.Add sr, j
- br(j, 1) = ar(i, 2)
- br(j, 2) = ar(i, 3)
- End If
- rw = dr(sr)
- If Not dc.exists(ar(i, 1)) Then
- k = k + 1
- dc.Add ar(i, 1), k
- br(1, k) = ar(i, 1)
- End If
- cl = dc(ar(i, 1))
- br(rw, cl) = br(rw, cl) + ar(i, 5) - ar(i, 4)
- Next i
- br(j + 1, 1) = "合计": br(1, k + 1) = "合计"
- For m = 2 To j
- For n = 3 To k
- br(m, k + 1) = br(m, k + 1) + br(m, n)
- br(j + 1, n) = br(j + 1, n) + br(m, n)
- hj = hj + br(m, n)
- Next n
- Next m
- br(j + 1, k + 1) = hj
- With Cells(1, 7)
- .Resize(Rows.Count, k + 1).ClearContents
- .Resize(j + 1, k + 1) = br
- End With
- End Sub
复制代码
|