標題:
使用VBA求資料統計輸出
[打印本頁]
作者:
b9208
時間:
2011-2-24 00:08
標題:
使用VBA求資料統計輸出
各位先進前輩
請教如何設計VBA程式來執行。
計算〞資料表〞內地區及姓名相同之次數,並輸出於〞統計表〞中。
非常感謝協助
[attach]4844[/attach]
作者:
hugh0620
時間:
2011-2-24 09:41
回復
1#
b9208
寫得很爛~ 但還是可以依你設的條件完成~
版主大大會有更好的寫法 我的寫法是初學者的寫法唷~ 僅供參考
[attach]4845[/attach]
作者:
b9208
時間:
2011-2-24 10:50
回復
2#
hugh0620
[attach]4846[/attach]
謝謝前輩指導
目前測試OK
另請教如下條件:
一、【輸出小計】:只輸出台北、屏東、新竹地區 (D3:F3)
二、【輸出合計】:輸出所有地區
請參閱統計表
Thanks
作者:
Hsieh
時間:
2011-2-24 12:02
回復
3#
b9208
附件內樞紐分析表方法供你參考[attach]4850[/attach]
Private Sub CommandButton1_Click()
Set d = CreateObject("Scripting.Dictionary")
Set d1 = CreateObject("Scripting.Dictionary")
Set d2 = CreateObject("Scripting.Dictionary")
With Sheet3
For Each a In .Range(.[B6], .[B65536].End(xlUp))
ar = Array(a, a.Offset(, 2), a.Offset(, 3), "")
d(a.Offset(, 3).Value) = d(a.Offset(, 3).Value) + 1
ar(3) = d(a.Offset(, 3).Value)
d1(a.Offset(, 3).Value) = ar
d2(a.Value) = d2(a.Value) + 1
Next
End With
With Sheets("統計表")
.[B7:F65536] = ""
.[B7].Resize(d1.Count, 4) = Application.Transpose(Application.Transpose(d1.items))
.[B6].Resize(d1.Count + 1, 4).Sort key1:=.[B7], key2:=.[C7], header:=xlYes
.[G7:H65536] = ""
.[G7].Resize(d2.Count, 1) = Application.Transpose(d2.keys)
.[H7].Resize(d2.Count, 1) = Application.Transpose(d2.items)
.[G6].Resize(d2.Count + 1, 2).Sort key1:=.[G7], header:=xlYes
.Select
End With
End Sub
複製代碼
作者:
b9208
時間:
2011-2-24 21:28
回復
4#
Hsieh
謝謝版主
程式測試可以
樞紐分析表方法目前學習中
作者:
aa7551
時間:
2011-2-26 17:51
版主,請教With Sheet3 For Each a In .Range(.[B6], .[B65536].End(xlUp))..... End With
sheet的順序應為:統計表,資料表,樞紐分析表,在此時使用sheet3,不是應為樞紐分析表嗎?請解答迷津
作者:
b9208
時間:
2011-2-26 18:32
回復
6#
aa7551
請進入〞程式檢視碼〞查看
sheet2 (統計表)
sheet3 (資料表)
sheet 4 (樞紐分析表)
不一定第一個工作表就是sheet1
作者:
Hsieh
時間:
2011-2-26 18:32
回復
6#
aa7551
Sheet3是資料表的CodeName
[attach]4877[/attach]
作者:
aa7551
時間:
2011-2-26 20:28
學習了,以前總認為是工作表的排列順序為主,受教了,謝謝
作者:
GBKEE
時間:
2011-2-27 14:50
標題:
RE: 工作表的排列順序
回復
6#
aa7551
Sub Ex()
Dim i As Integer
For i = 1 To Sheets.Count
MsgBox Sheets(i).Name
Next
End Sub
複製代碼
如圖:
[attach]4881[/attach]
作者:
aa7551
時間:
2011-2-27 17:57
再次感謝版本的教導,基本功要多加練習,才能更進步
作者:
b9208
時間:
2012-3-9 20:03
回復
4#
Hsieh
Hsieh 前輩您好
使用後發現只要〞員工編號〞相同,則統計為一筆資料,不會比較〞地區〞及〞姓名〞二欄資料。
需求是〞地區、姓名及員工編號〞等三欄資料相同統計資料。
懇請指導
謝謝
[attach]9931[/attach]
作者:
Hsieh
時間:
2012-3-9 20:25
回復
12#
b9208
Private Sub CommandButton1_Click()
Set d = CreateObject("Scripting.Dictionary")
Set d1 = CreateObject("Scripting.Dictionary")
Set d2 = CreateObject("Scripting.Dictionary")
With Sheet3
For Each a In .Range(.[B6], .[B65536].End(xlUp))
ar = Array(a, a.Offset(, 2), a.Offset(, 3), "")
m = Join(ar)
d(m) = d(m) + 1 '3欄統計
ar(3) = d(m)
d1(m) = ar
d2(a.Value) = d2(a.Value) + 1 '地區統計
Next
End With
With Sheets("統計表")
.[B7:F65536] = ""
.[B7].Resize(d1.Count, 4) = Application.Transpose(Application.Transpose(d1.items))
.[B6].Resize(d1.Count + 1, 4).Sort key1:=.[B7], key2:=.[C7], header:=xlYes
.[G7:H65536] = ""
.[G7].Resize(d2.Count, 1) = Application.Transpose(d2.keys)
.[H7].Resize(d2.Count, 1) = Application.Transpose(d2.items)
.[G6].Resize(d2.Count + 1, 2).Sort key1:=.[G7], header:=xlYes
.Select
End With
End Sub
複製代碼
作者:
b9208
時間:
2012-3-9 22:13
回復
13#
Hsieh
謝謝版主
執行OK
作者:
ching12a
時間:
2012-7-30 14:52
剛好需要怎樣統計資料表數字
作者:
c_c_lai
時間:
2012-7-30 15:38
回復
13#
Hsieh
請教Hsieh大,您那 Sheet4("樞紐分析")部分之內容,
如何以 VBA 來展現 (實現) 呢? 謝謝您!
作者:
Hsieh
時間:
2012-7-30 18:47
回復
16#
c_c_lai
可利用錄製巨集來取得VBA代碼
這樣可同時熟悉EXCEL的基本操作
您不妨先試試看
作者:
character
時間:
2014-6-24 11:11
請問要如何使用樞紐單純只針對總計做直條圖呢?
現在都會一併把細項列到直條圖了
感謝
作者:
ianlcc
時間:
2014-6-25 11:16
謝謝您的分享,這可以當作學習的經驗!
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)