Board logo

標題: 分類統計如何撰寫VBA [打印本頁]

作者: aa7551    時間: 2015-12-10 23:09     標題: 分類統計如何撰寫VBA

附件中有資料及統計二工作表,資料中有分類一,二,三,四,在統計時希望能將分類結合命名五碼(分類一,二,三,四結合),如附件第一筆,五碼為22203,三碼為222,二碼為22,一碼為2,計算金額及件數如統計工作表
請求協助
作者: hcm19522    時間: 2015-12-11 10:52

E2=SUMPRODUCT((--LEFT(A$2:A$64,3)=D2)*B$2:B$64)
F2=SUMPRODUCT((--LEFT(A$2:A$64,3)=D2)*C$2:C$64)
H2=SUMPRODUCT((--LEFT(A$2:A$64,2)=G2)*B$2:B$64)
I2=SUMPRODUCT((--LEFT(A$2:A$64,2)=G2)*C$2:C$64)
H8=SUMPRODUCT((--LEFT(A$2:A$64)=G8)*B$2:B$64)
I8=SUMPRODUCT((--LEFT(A$2:A$64)=G8)*C$2:C$64)
作者: aa7551    時間: 2015-12-11 12:51

感謝回答,工作表統計中五碼是手工計算而來,希望協助使用VBA
作者: 准提部林    時間: 2015-12-12 11:49

Sub 分類統計()
Dim xD, xR As Range, Arr, Brr, i&, j%, Jm&, T, N&, C&(1 To 4)
Sheets("統計").UsedRange.Offset(1, 0).EntireRow.Delete
Arr = Range([資料!A2], [資料!A65536].End(xlUp)(1, 5))
ReDim Brr(1 To UBound(Arr), 1 To 12)
Set xD = CreateObject("Scripting.Dictionary")
 
For i = 1 To UBound(Arr)
  T = 0
For j = 1 To 4
  T = T * IIf(j = 4, 100, 10) + Arr(i, j + 1)
  Jm = xD(T)
  If Jm = 0 Then C(j) = C(j) + 1: Jm = C(j): xD(T) = Jm
  If Jm > N Then N = Jm
  Brr(Jm, 12 - j * 3 + 1) = T
  Brr(Jm, 12 - j * 3 + 2) = Brr(Jm, 12 - j * 3 + 2) + Arr(i, 1)
  Brr(Jm, 12 - j * 3 + 3) = Brr(Jm, 12 - j * 3 + 3) + 1
Next j:  Next i
 
Set xR = [統計!A2]
xR.Resize(N, 12) = Brr
For j = 1 To 4
  xR.Resize(N, 3).Sort Key1:=xR, Order1:=xlAscending, Header:=xlNo
  Set xR = xR(1, 4)
Next j
End Sub

參考附件:
[attach]22806[/attach]
 
作者: aa7551    時間: 2015-12-12 12:58

回復 4# 准提部林
感謝指導,大大謝謝




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)