大体でIT

-ちょっと使えるネタを紹介-

大体でIT

Excel VBAで、ピボットグラフを作成する方法について、ご紹介します。使うVBAコードは、「.Shapes.AddChart2」です。ピボットグラフを「選択」する場合と「指定」する場合で、VBAコードが変わりますので、それぞれ解説していきます。VBAでピボットグラフの操作を自動化していきましょう。

はじめに

この記事では、ピボットグラフを作成する方法について、ご紹介します。

ピボットグラフは、ピボットテーブルから簡単に作成することができます。

ピボットテーブルを「選択」する場合と、「指定」する場合で、VBAコードが変わります。

オブジェクトの位置関係は、「ChartObjects」→「Chart」の順番です。

ピボットグラフをVBAで作成できると便利なので、VBAでの操作に慣れていきましょう。

では、ピボットグラフを「選択」の場合と「指定」する場合で、それぞれ解説していきます。

この記事で紹介すること

  • 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

では、解説していきます。

VBAでピボットグラフを作成

VBAで、ピボットグラフを「作成」してみます。

選択する場合

ピボットテーブルを「選択」してピボットグラフを作成してみます。

VBAコードは、こんな感じです。

Sub TEST1()
    
    'ピボットテーブルを選択
    Range("A3").Select
    '集合縦棒を挿入
    ActiveSheet.Shapes.AddChart2(, xlColumnClustered).Select
    
End Sub

「SetSourceData」とかしなくてもピボットグラフを作成できます。簡単です。

ピボットテーブルを用意しておきます。

ピボットテーブルを用意

ピボットテーブルを用意

では、VBAコードを実行します。

ピボットグラフ作成できた

ピボットテーブルを選択してピボットグラフを作成できた

ピボットテーブルを「選択」してピボットグラフを作成できました。

指定する場合

ピボットテーブルを「指定」してピボットグラフを作成してみます。

VBAコードは、こんな感じです。

Sub TEST2()
    
    'ピボットテーブルを選択
    ActiveSheet.PivotTables(1).TableRange1.Select
    '集合縦棒を挿入
    ActiveSheet.Shapes.AddChart2(, xlColumnClustered).Select
    
End Sub

「指定」する方法と使うと、ピボットテーブルの位置がわからなくても、ピボットグラフを作成できるので便利です。

ピボットテーブルを用意しておきます。

ピボットテーブルを用意

ピボットテーブルを用意

では、VBAコードを実行します。

ピボットグラフ作成できた

ピボットテーブルを指定してピボットグラフを作成できた

ピボットテーブルを「指定」してピボットグラフを作成できました。

VBAでピボットグラフの種類

VBAでピボットグラフの種類をまとめておきます。

代表的なピボットテーブルの引数一覧

代表的なピボットテーブルの引数一覧は、こんな感じです。

  • 集合縦棒(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でピボットグラフの「種類」を変更してみます。

選択する場合

VBAでピボットグラフを「選択」して種類を変更してみます。

VBAコードは、こんな感じです。

Sub TEST3()

    '「集合縦棒」に変更
    ActiveChart.ChartType = xlColumnStacked

End Sub

グラフの種類を変更する際に操作するのは、「.Chart」です。

「ActiveChart」で「.Chart」を操作できるので、そのまま「.ChartType」で種類を変更できます。

位置関係は、「ChartObjects」→「Chart(チャート)」の順番です。

ピボットグラフを作成しておきます。

ピボットグラフを用意

ピボットグラフを作成しておく

では、VBAコードを実行します。

ピボットグラフの種類を変更できた

VBAでピボットグラフを選択して種類を変更できた

VBAでピボットグラフを「選択」して種類を変更できました。

指定する場合

VBAでピボットグラフを「指定」して種類を変更してみます。

VBAコードは、こんな感じです。

Sub TEST4()
    
    '「集合縦棒」に変更
    ActiveSheet.ChartObjects(1).Chart.ChartType = xlColumnStacked
    
End Sub

指定する場合は、「.ChartObjects(1).Chart」のように「.Chart」まで記載する必要があります。

グラフ種類を変更する際に、変更したいのは、「.Chart」の部分です。

ピボットグラフを作成しておきます。

ピボットグラフを用意

ピボットグラフを作成しておく

では、VBAコードを実行します。

ピボットグラフの種類を変更できた

VBAでピボットグラフを指定して種類を変更できた

VBAでピボットグラフを「指定」して種類を変更できました。

VBAでピボットグラフの位置と幅、高さを設定

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でピボットグラフを選択して位置、幅、高さを設定できた

VBAでピボットグラフを「選択」して位置、幅、高さを設定できました。

指定する場合

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でピボットグラフを「指定」して位置、幅、高さを設定できました。

VBAでピボットグラフの名前を取得

VBAでピボットグラフの「名前」を取得してみます。

選択する場合

VBAでピボットグラフを「選択」して名前を取得してみます。

VBAコードは、こんな感じです。

Sub TEST7()
    
    '選択したグラフの名前を取得
    Debug.Print ActiveChart.Parent.Name
    
End Sub

名前を取得するには、「ChartObjects」を操作する必要があるので、「ActiveChart」の親要素「.Parent」を操作しています。

ピボットグラフを用意しておきます。

ピボットグラフを用意

ピボットグラフを用意しておく

では、VBAコードを実行します。

ピボットグラフの名前を取得できた

VBAでピボットグラフを選択して名前を取得できた

VBAでピボットグラフを「選択」して名前を取得できました。

指定する場合

VBAでピボットグラフを「指定」して名前を取得してみます。

VBAコードは、こんな感じです。

Sub TEST8()
    
    'グラフの名前を取得
    Debug.Print ActiveSheet.ChartObjects(1).Name
    
End Sub

「ChartObjects」を使えば、そのまま「.Name」を使うことができます。

ピボットグラフを用意しておきます。

ピボットグラフを用意

ピボットグラフを用意しておく

では、VBAコードを実行します。

ピボットグラフの名前を取得できた

VBAでピボットグラフを指定して名前を取得できた

VBAでピボットグラフを「指定」して名前を取得できました。

VBAでピボットグラフの名前を設定

VBAでピボットグラフの「名前」を設定してみます。

選択する場合

VBAでピボットグラフを「選択」して名前を設定してみます。

VBAコードは、こんな感じです。

Sub TEST9()
    
    '選択したグラフの名前を変更
    ActiveChart.Parent.Name = "図2"
    
End Sub

ピボットグラフを用意しておきます。

ピボットグラフを用意

ピボットグラフを用意しておく

では、VBAコードを実行します。

ピボットグラフの名前を設定できた

VBAでピボットグラフを選択して名前を設定できた

VBAでピボットグラフを「選択」して名前を設定できました。

指定する場合

VBAでピボットグラフを「指定」して名前を設定してみます。

VBAコードは、こんな感じです。

Sub TEST10()
    
    'グラフの名前を変更
    ActiveSheet.ChartObjects(1).Name = "図2"
    
End Sub

ピボットグラフを用意しておきます。

ピボットグラフを用意

ピボットグラフを用意しておく

では、VBAコードを実行します。

ピボットグラフの名前を設定できた

VBAでピボットグラフを指定して名前を設定できた

VBAでピボットグラフを「指定」して名前を設定できました。

VBAでピボットグラフの削除

VBAでピボットグラフの「削除」してみます。

選択する場合

VBAでピボットグラフを「選択」して削除してみます。

VBAコードは、こんな感じです。

Sub TEST11()
    
    '選択したグラフを削除
    ActiveChart.Parent.Delete
    
End Sub

「ActiveChart」の親要素「.Parent」を使って、「ChartObjects」を操作しています。

ピボットグラフを用意しておきます。

ピボットグラフを用意

ピボットグラフを作成しておく

では、VBAコードを実行します。

ピボットグラフを削除できた

VBAでピボットグラフを選択して削除できた

VBAでピボットグラフを「選択」して削除できました。

指定する場合

VBAでピボットグラフを「指定」して削除してみます。

VBAコードは、こんな感じです。

Sub TEST12()
    
    'グラフを削除する
    ActiveSheet.ChartObjects(1).Delete
    
End Sub

ピボットグラフを用意しておきます。

ピボットグラフを用意

ピボットグラフを作成しておく

では、VBAコードを実行します。

ピボットグラフを削除できた

VBAでピボットグラフを指定して削除できた

VBAでピボットグラフを「指定」して削除できました。

VBAでピボットグラフをループして削除

VBAでピボットグラフをループして削除してみます。

複数のピボットテーブルを削除する

「For Each」で複数のピボットグラフを削除してみます。

VBAコードは、こんな感じです。

Sub TEST13()
    
    'グラフをループする
    For Each A In ActiveSheet.ChartObjects
        A.Delete '削除
    Next
    
End Sub

複数のピボットグラフを作成しておきます。

複数のピボットグラフを用意

複数のピボットグラフを作成しておく

では、VBAコードを実行します。

すべてのピボットグラフを削除できた

For Eachで複数のピボットグラフを削除できた

「For Each」で複数のピボットグラフを削除できました。

おわりに

この記事では、ピボットグラフを作成する方法について、ご紹介しました。

ピボットグラフは、ピボットテーブルから簡単に作成することができます。

ピボットテーブルを「選択」する場合と、「指定」する場合で、VBAコードが変わります。

オブジェクトの位置関係は、「ChartObjects」→「Chart」の順番です。

ピボットグラフの作成に慣れていきましょう。

参考になればと思います。最後までご覧くださいまして、ありがとうございました。

関連する記事から探す

カテゴリから探す

カテゴリから見たい項目を探すと便利ですよ。

アーカイブから探す