您的位置:首頁>正文

小姐姐這樣的資料統計讓人無語!

大家好, 今天和大家分享“這樣的資料統計讓人無語”, 問題是這樣的, 這位朋友提出這樣一問題, 按A列姓名和B列物品對C列的數量進行匯總, 本來這種題應該用透視表做最好了, 且一目了然, 而這位朋友非要vba實現下面的E, F列效果, 真讓人無語啊|更多Excel學習和問題請加群:289393114、570064677

一、提問者原話:

單單這個問題用樞紐分析表我可以搞定, 但是我現在是想瞭解這個用VBA怎麼寫, 別的相關資料都是用VBA做, 不可能這個用樞紐分析表, 而且我夜想學學這個怎麼寫!!有空幫我寫個唄, 謝謝了!!!

二、透視表實現

1、最後效果

2、動畫操作步驟

三、vba程式設計實現

1、統計出來的效果

2、動畫操作方法

3、代碼

Option Explicit

Sub test100()

Dim Dic, arr1, x, k, y, Dic1, arr3(1 To 100000, 1 To 1)

Set Dic = CreateObject("Scripting.Dictionary")

Set Dic1 = CreateObject("Scripting.Dictionary")

arr1 = Range("A1").CurrentRegion

ReDim arr2(1 To UBound(arr1), 1 To UBound(arr1, 2))

For x = 2 To UBound(arr1)

If Not Dic.exists(arr1(x, 1) & arr1(x, 2)) Then

k = k + 1

Dic(arr1(x, 1) & arr1(x, 2)) = k

arr2(k, 1) = arr1(x, 1)

arr2(k, 2) = arr1(x, 2)

arr2(k, 3) = arr1(x, 3)

Else

arr2(Dic(arr1(x, 1) & arr1(x, 2)), 3) = arr2(Dic(arr1(x, 1) & arr1(x, 2)), 3) + arr1(x, 3)

End If

Next x

'============================

For x = 2 To UBound(arr1)

Dic1(arr1(x, 1)) = ""

Next x

For x = 1 To Dic1.Count

For y = 1 To k

If arr2(y, 1) = Dic1.keys()(x - 1) Then

arr3(x, 1) = arr3(x, 1) & arr2(y, 2) & "*" & arr2(y, 3)

End If

Next y

Next x

Range("E1").CurrentRegion.Clear

[E1] = "姓名": [F1] = "備註"

[E2].Resize(Dic1.Count, 1) = Application.Transpose(Dic1.keys)

[F2].Resize(Dic.Count, 1) = arr3

End Sub

'備註:D列要是空

同類文章
Next Article
喜欢就按个赞吧!!!
点击关闭提示