大体でIT
大体でIT
2021/5/23
Excel VBAで、ピボットグラフを作成する方法について、ご紹介します。使うVBAコードは、「.Shapes.AddChart2」です。ピボットグラフを「選択」する場合と「指定」する場合で、VBAコードが変わりますので、それぞれ解説していきます。VBAでピボットグラフの操作を自動化していきましょう。
この記事では、ピボットグラフを作成する方法について、ご紹介します。
ピボットグラフは、ピボットテーブルから簡単に作成することができます。
ピボットテーブルを「選択」する場合と、「指定」する場合で、VBAコードが変わります。
オブジェクトの位置関係は、「ChartObjects」→「Chart」の順番です。
ピボットグラフをVBAで作成できると便利なので、VBAでの操作に慣れていきましょう。
では、ピボットグラフを「選択」の場合と「指定」する場合で、それぞれ解説していきます。
目次から使いそうな説明のところへ移動すると便利ですよ。
ピボットグラフを作成するVBAコードをまとめています。
VBAコードだけ確認したい場合に、ご活用ください。
'【選択する場合】
'作成
Range("A3").Select 'ピボットテーブルを選択
ActiveSheet.Shapes.AddChart2(, xlColumnClustered).Select '集合縦棒を挿入
'変更
ActiveChart.ChartType = xlColumnStacked '「集合縦棒」に変更
'位置、幅、高さを設定
With ActiveChart.Parent
.Left = Range("B11:H19").Left '左の位置
.Top = Range("B11:H19").Top '上の位置
.Width = Range("B11:H19").Width '幅
.Height = Range("B11:H19").Height '高さ
End With
'名前を取得
Debug.Print ActiveChart.Parent.Name
'名前を変更
ActiveChart.Parent.Name = "図2"
'グラフを削除
ActiveChart.Parent.Delete
'【グラフを指定する場合】
'作成
ActiveSheet.PivotTables(1).TableRange1.Select 'ピボットテーブルを選択
ActiveSheet.Shapes.AddChart2(, xlColumnClustered).Select '集合縦棒を挿入
'変更
ActiveSheet.ChartObjects(1).Chart.ChartType = xlColumnStacked '「集合縦棒」に変更
'位置、幅、高さを設定
With ActiveSheet.ChartObjects(1)
.Left = Range("B11:H19").Left '左の位置
.Top = Range("B11:H19").Top '上の位置
.Width = Range("B11:H19").Width '幅
.Height = Range("B11:H19").Height '高さ
End With
'名前を取得
Debug.Print ActiveSheet.ChartObjects(1).Name
'名前を変更
ActiveSheet.ChartObjects(1).Name = "図2"
'グラフを削除
ActiveSheet.ChartObjects(1).Delete
ピボットテーブルを「選択」してピボットグラフを作成してみます。
Sub TEST1()
'ピボットテーブルを選択
Range("A3").Select
'集合縦棒を挿入
ActiveSheet.Shapes.AddChart2(, xlColumnClustered).Select
End Sub
「SetSourceData」とかしなくてもピボットグラフを作成できます。簡単です。
ピボットテーブルを用意
ピボットグラフ作成できた
ピボットテーブルを「選択」してピボットグラフを作成できました。
ピボットテーブルを「指定」してピボットグラフを作成してみます。
Sub TEST2()
'ピボットテーブルを選択
ActiveSheet.PivotTables(1).TableRange1.Select
'集合縦棒を挿入
ActiveSheet.Shapes.AddChart2(, xlColumnClustered).Select
End Sub
「指定」する方法と使うと、ピボットテーブルの位置がわからなくても、ピボットグラフを作成できるので便利です。
ピボットテーブルを用意
ピボットグラフ作成できた
ピボットテーブルを「指定」してピボットグラフを作成できました。
代表的なピボットテーブルの引数一覧は、こんな感じです。
集合縦棒(xlColumnClustered)
積み上げ縦棒(xlColumnStacked)
100%積み上げ縦棒(xlColumnStacked100)
集合横棒(xlBarClustered)
積み上げ横棒(xlBarStacked)
100%積み上げ横棒(xlBarStacked100)
折れ線(xlLine)
積み上げ折れ線(xlLineStacked)
100%積み上げ折れ線(xlLineStacked100)
円(xlPie)
ちなみに、VBAコードの例を列挙すると、こんな感じになります。
'集合縦棒
ActiveSheet.Shapes.AddChart2(, xlColumnClustered).Select
'積み上げ縦棒
ActiveSheet.Shapes.AddChart2(, xlColumnStacked).Select
'100%積み上げ縦棒
ActiveSheet.Shapes.AddChart2(, xlColumnStacked100).Select
'集合横棒
ActiveSheet.Shapes.AddChart2(, xlBarClustered).Select
'積み上げ横棒
ActiveSheet.Shapes.AddChart2(, xlBarStacked).Select
'100%積み上げ横棒
ActiveSheet.Shapes.AddChart2(, xlBarStacked100).Select
'折れ線
ActiveSheet.Shapes.AddChart2(, xlLine).Select
'積み上げ折れ線
ActiveSheet.Shapes.AddChart2(, xlLineStacked).Select
'100%積み上げ折れ線
ActiveSheet.Shapes.AddChart2(, xlLineStacked100).Select
'円
ActiveSheet.Shapes.AddChart2(, xlPie).Select
作成したいグラフの種類に合わせて、VBAコードを使い分けましょう。
VBAでピボットグラフの「種類」を変更してみます。
VBAでピボットグラフを「選択」して種類を変更してみます。
Sub TEST3()
'「集合縦棒」に変更
ActiveChart.ChartType = xlColumnStacked
End Sub
グラフの種類を変更する際に操作するのは、「.Chart」です。
「ActiveChart」で「.Chart」を操作できるので、そのまま「.ChartType」で種類を変更できます。
位置関係は、「ChartObjects」→「Chart(チャート)」の順番です。
ピボットグラフを用意
ピボットグラフの種類を変更できた
VBAでピボットグラフを「選択」して種類を変更できました。
VBAでピボットグラフを「指定」して種類を変更してみます。
Sub TEST4()
'「集合縦棒」に変更
ActiveSheet.ChartObjects(1).Chart.ChartType = xlColumnStacked
End Sub
指定する場合は、「.ChartObjects(1).Chart」のように「.Chart」まで記載する必要があります。
グラフ種類を変更する際に、変更したいのは、「.Chart」の部分です。
ピボットグラフを用意
ピボットグラフの種類を変更できた
VBAでピボットグラフを「指定」して種類を変更できました。
VBAでピボットグラフの「位置と幅、高さ」を設定してみます。
VBAでピボットグラフを「選択」して位置、幅、高さを設定してみます。
Sub TEST5()
'選択したグラフ
With ActiveChart.Parent
.Left = Range("B11:H19").Left '左の位置
.Top = Range("B11:H19").Top '上の位置
.Width = Range("B11:H19").Width '幅
.Height = Range("B11:H19").Height '高さ
End With
End Sub
ピボットテーブルを操作するには、「ChartObjects」の部分を操作する必要があります。
ただ、「ActiveChart」で操作できるのは、「.Chart」の部分になってしまいます。
「ActiveChart.Parent」とすることで、「.Chart」の「親要素」である「ChartObjects」を操作できるようになります。
ピボットグラフを用意
位置、幅、高さを設定できた
VBAでピボットグラフを「選択」して位置、幅、高さを設定できました。
VBAでピボットグラフを「指定」して位置、幅、高さを設定してみます。
Sub TEST6()
'グラフを指定
With ActiveSheet.ChartObjects(1)
.Left = Range("B11:H19").Left '左の位置
.Top = Range("B11:H19").Top '上の位置
.Width = Range("B11:H19").Width '幅
.Height = Range("B11:H19").Height '高さ
End With
End Sub
「ChartObjects」を使えば、そのまま「.Left」などを使うことができます。
ピボットグラフを用意
位置、幅、高さを設定できた
VBAでピボットグラフを「指定」して位置、幅、高さを設定できました。
VBAでピボットグラフの「名前」を取得してみます。
VBAでピボットグラフを「選択」して名前を取得してみます。
Sub TEST7()
'選択したグラフの名前を取得
Debug.Print ActiveChart.Parent.Name
End Sub
名前を取得するには、「ChartObjects」を操作する必要があるので、「ActiveChart」の親要素「.Parent」を操作しています。
ピボットグラフを用意
ピボットグラフの名前を取得できた
VBAでピボットグラフを「選択」して名前を取得できました。
VBAでピボットグラフを「指定」して名前を取得してみます。
Sub TEST8()
'グラフの名前を取得
Debug.Print ActiveSheet.ChartObjects(1).Name
End Sub
「ChartObjects」を使えば、そのまま「.Name」を使うことができます。
ピボットグラフを用意
ピボットグラフの名前を取得できた
VBAでピボットグラフを「指定」して名前を取得できました。
VBAでピボットグラフの「名前」を設定してみます。
VBAでピボットグラフを「選択」して名前を設定してみます。
Sub TEST9()
'選択したグラフの名前を変更
ActiveChart.Parent.Name = "図2"
End Sub
ピボットグラフを用意
ピボットグラフの名前を設定できた
VBAでピボットグラフを「選択」して名前を設定できました。
VBAでピボットグラフを「指定」して名前を設定してみます。
Sub TEST10()
'グラフの名前を変更
ActiveSheet.ChartObjects(1).Name = "図2"
End Sub
ピボットグラフを用意
ピボットグラフの名前を設定できた
VBAでピボットグラフを「指定」して名前を設定できました。
VBAでピボットグラフを「選択」して削除してみます。
Sub TEST11()
'選択したグラフを削除
ActiveChart.Parent.Delete
End Sub
「ActiveChart」の親要素「.Parent」を使って、「ChartObjects」を操作しています。
ピボットグラフを用意
ピボットグラフを削除できた
VBAでピボットグラフを「選択」して削除できました。
VBAでピボットグラフを「指定」して削除してみます。
Sub TEST12()
'グラフを削除する
ActiveSheet.ChartObjects(1).Delete
End Sub
ピボットグラフを用意
ピボットグラフを削除できた
VBAでピボットグラフを「指定」して削除できました。
VBAでピボットグラフをループして削除してみます。
「For Each」で複数のピボットグラフを削除してみます。
Sub TEST13()
'グラフをループする
For Each A In ActiveSheet.ChartObjects
A.Delete '削除
Next
End Sub
複数のピボットグラフを用意
すべてのピボットグラフを削除できた
「For Each」で複数のピボットグラフを削除できました。
この記事では、ピボットグラフを作成する方法について、ご紹介しました。
ピボットグラフは、ピボットテーブルから簡単に作成することができます。
ピボットテーブルを「選択」する場合と、「指定」する場合で、VBAコードが変わります。
オブジェクトの位置関係は、「ChartObjects」→「Chart」の順番です。
参考になればと思います。最後までご覧くださいまして、ありがとうございました。