|
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件 ★ 免费下载 ★ ★ 使用帮助★
本帖最后由 粤北一蚯 于 2017-4-21 15:27 编辑
- Option Explicit
- Sub aa()
- Dim xrow%, i%, k%, m%
- Dim dic As Object, x$
- Dim arr, brr
- arr = Sheet1.Range("a1").CurrentRegion.Value
- ReDim brr(1 To UBound(arr), 1 To UBound(arr, 2))
- Set dic = CreateObject("Scripting.dictionary")
- For i = 3 To UBound(arr)
- x = arr(i, 1) & arr(i, 4)
- If dic.Exists(x) Then
- m = dic(x)
- If arr(i, 4) = "A" Then
- brr(m, 3) = brr(m, 3) + 1
- ElseIf arr(i, 4) = "B" Then
- brr(m, 4) = brr(m, 4) + 1
- End If
- Else
- k = k + 1
- dic(x) = k
- brr(k, 1) = arr(i, 1)
- brr(k, 2) = brr(k, 2) + arr(i, 3)
- If arr(i, 4) = "A" Then
- brr(k, 3) = brr(k, 3) + 1
- ElseIf arr(i, 4) = "B" Then
- brr(k, 4) = brr(k, 4) + 1
- End If
- End If
- Next
- With Sheet2
- xrow = .Range("a1").CurrentRegion.Rows.Count
- If xrow > 2 Then
- .Range([a3], Cells(xrow, 4)).Clear
- End If
- .[a3].Resize(UBound(brr), UBound(brr, 2)) = brr
- With Range("a3", Cells(2 + dic.Count, 4))
- .Borders(xlEdgeLeft).LineStyle = xlContinuous
- .Borders(xlEdgeTop).LineStyle = xlContinuous
- .Borders(xlEdgeBottom).LineStyle = xlContinuous
- .Borders(xlEdgeRight).LineStyle = xlContinuous
- .Borders(xlInsideVertical).LineStyle = xlContinuous
- .Borders(xlInsideHorizontal).LineStyle = xlContinuous
- .HorizontalAlignment = xlCenter
- .VerticalAlignment = xlCenter
- End With
- End With
- Set dic = Nothing
- Erase arr
- Erase brr
- x = ""
- End Sub
复制代码
|
|