エクセルマクロ・VBA達人養成塾 小川です。
前回から、最近ある受講生の方から受けた質問をベースに、こんなテーマで解説をしています。
下に示した表がある。
|A列 |B列 |C列 |D列 |E列 |
--------------------------------------------------------------
1 行目 |ID |受信日時 |企業名|内容 |タイプ |
--------------------------------------------------------------
2 行目 |1 |2012/2/1 |A社 |××支払利息 |Comment |
--------------------------------------------------------------
3 行目 |2 |2012/2/2 |B社 |×□制作料 |Flash |
--------------------------------------------------------------
4 行目 |3 |2012/2/3 |C社 |×□賃貸料 |Periodical|
--------------------------------------------------------------
5 行目 |4 |2012/2/4 |A社 |×凹委託費用 |Report |
--------------------------------------------------------------
6 行目 |5 |2012/2/5 |C社 |×凹実施料 |Comment |
--------------------------------------------------------------
7 行目 |6 |2012/2/6 |A社 |□凹商品売却 |Report |
--------------------------------------------------------------
8 行目 |7 |2012/2/7 |C社 |□凸保険料 |Flash |
--------------------------------------------------------------
9 行目 |8 |2012/2/8 |B社 |△×支払利息 |Comment |
--------------------------------------------------------------
10行目 |9 |2012/2/9 |C社 |△□不動産取引|Flash |
--------------------------------------------------------------
11行目 |10 |2012/2/10|A社 |△○制作料 |Report |
--------------------------------------------------------------
12行目 |11 |2012/2/11|A社 |△凹調査料 |Comment |
--------------------------------------------------------------
13行目 |12 |2012/2/12|B社 |○×荷役料 |Comment |
--------------------------------------------------------------
14行目 |13 |2012/2/13|E社 |○□リース料 |Comment |
--------------------------------------------------------------
15行目 |14 |2012/2/14|B社 |○□代行費用 |Flash |
--------------------------------------------------------------
16行目 |15 |2012/2/15|C社 |凹×リース料 |Flash |
--------------------------------------------------------------
17行目 |16 |2012/2/16|F社 |凹□支払利息 |Flash |
--------------------------------------------------------------
18行目 |17 |2012/2/17|A社 |凸×作成料 |Comment |
--------------------------------------------------------------
19行目 |18 |2012/2/18|B社 |凸×制作料 |Flash |
--------------------------------------------------------------
20行目 |19 |2012/2/19|A社 |凸△賃貸料 |Flash |
--------------------------------------------------------------
21行目 |20 |2012/2/20|B社 |凸凸制作料 |Periodical|
--------------------------------------------------------------
このとき、以下のように、どの対象のどのタイプが何回出現したかを集計したい。
|A列 |B列 |C列 |D列 |E列 |F列 |
-----------------------------------------------------------
1 行目 |企業名|合計 |Flash|Comment|Periodical|Report|
-----------------------------------------------------------
2 行目 |A社 |7 |3 |4 |0 |0 |
-----------------------------------------------------------
3 行目 |B社 |6 |3 |2 |1 |0 |
-----------------------------------------------------------
4 行目 |C社 |5 |3 |1 |1 |0 |
-----------------------------------------------------------
5 行目 |D社 |0 |0 |0 |0 |0 |
-----------------------------------------------------------
6 行目 |E社 |1 |0 |1 |0 |0 |
-----------------------------------------------------------
7 行目 |F社 |1 |1 |0 |0 |0 |
-----------------------------------------------------------
では、どうするか。
第一感は、ピボットテーブルを使うこと。
ということで、ピボットテーブルを使って各項目の出現頻度を数えてみたのが、前回のブログ。
今日は、自動記録をしながらこの操作をしたときにできたマクロを紹介。
こんな感じ↓になった。
‘
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
“main!R1C1:R21C5″).CreatePivotTable TableDestination:=””, TableName:= _
“ピボットテーブル1”, DefaultVersion:=xlPivotTableVersion10
ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1)
ActiveSheet.Cells(3, 1).Select
With ActiveSheet.PivotTables(“ピボットテーブル1”).PivotFields(“企業名”)
.Orientation = xlRowField
.Position = 1
End With
With ActiveSheet.PivotTables(“ピボットテーブル1”).PivotFields(“タイプ”)
.Orientation = xlColumnField
.Position = 1
End With
ActiveSheet.PivotTables(“ピボットテーブル1”).AddDataField ActiveSheet.PivotTables( _
“ピボットテーブル1”).PivotFields(“ID”), “合計 / ID”, xlSum
ActiveSheet.PivotTables(“ピボットテーブル1”).PivotSelect “”, xlOrigin, True
Range(“A3”).Select
ActiveSheet.PivotTables(“ピボットテーブル1”).PivotFields(“合計 / ID”).Function = _
xlCount
End Sub
上記のマクロは、元の表が「main」というシートにある場合であれば、ちゃんと動作します。
ということで。
このマクロの内容について解説したいのですが。
その前提として、「ピボットテーブルは、いったいどのようにして作られるのか?」
という話をしなくてはなりません。
でないと、このマクロの内容について理解できないからです。
実は、その話は、かなりややこしいです。
ということで、次回解説したいと思います。
それでは ヾ(´ー`)ノ