スライドショー

【ExcelVBA入門】グラフを作成する方法について徹底解説!

こんにちは、フリーランスエンジニア兼ライターのワキザカ サンシロウです。

皆さんは、VBAでグラフを操作する方法を知っていますか?

グラフ作成、コピー、削除など、グラフを使うときに覚えておくと便利な操作は多いです。

そこで今回は、

・グラフを作成する方法

といった基礎的なことから、

・グラフの行列を入れ替える方法

・グラフタイトル・軸を設定する方法

・ファイル読み込み機能と組み合わせて自動化ツールを作る方法

といった応用的な方法まで、徹底的に解説します!

VBAでグラフを操作する方法

最初に、グラフを操作する方法について解説します!

グラフ作成方法

まずは、グラフを作成する方法です。

グラフを作成する場合は、以下のように書きます。

グラフ作成方法:

With ActiveSheet.Shapes.AddChart.Chart
    .ChartType = グラフの種類
    .SetSourceData Rangeのセル範囲
End With

グラフの種類に設定する値一覧:

Noグラフの種類
1xlColumnClustered集合縦棒
2xlLine 折れ線
3xlPie
4xlDoughnutドーナツ
5xlArea
6xlXYScatter散布図
7xlRadarレーダー
※グラフの種類はとても多いので、一部抜粋しています。

棒グラフを作成するサンプルコードを用意しました。

Excelデータ:

サンプルコード:

Sub Test1()
  
  With ActiveSheet.Shapes.AddChart.Chart
    '棒グラフ追加
    .ChartType = xlColumnClustered
    .SetSourceData Range("A1:G8")
  End With

End Sub

実行結果:

このように、簡単にグラフを作ることができます。

行列を入れ替える方法

先ほどグラフはX軸が言語、Y軸が名前になっていますが、X軸が名前の方が誰がどの言語で何点取っているかわかりやすいですよね。

行列を入れ替えれば簡単に変更することができるので、おすすめです!

行列を入れ替える方法:

Select Case .PlotBy
  Case xlRows
    .PlotBy = xlColumns
  Case xlColumns
    .PlotBy = xlRows
End Select

先ほどのコードを書き換えると、以下のようになります。

行列入れ替え後のコード:

Sub Test2()
  
  With ActiveSheet.Shapes.AddChart.Chart
    '棒グラフ追加
    .ChartType = xlColumnClustered
    .SetSourceData Range("A1:G8")
    
    '行列入れ替え
    Select Case .PlotBy
      Case xlRows
        .PlotBy = xlColumns
      Case xlColumns
        .PlotBy = xlRows
    End Select
  End With

End Sub

実行結果:

グラフタイトル設定方法

グラフ作成後は、グラフのタイトルを設定しますよね。

グラフタイトルを追加する場合は、以下のように書きます。

グラフタイトル追加方法

.HasTitle = True       'グラフタイトルの追加
.ChartTitle.Text = ""  'グラフタイトルの変更

先ほどのコードに追加すると、以下のようになります。

グラフタイトル追加後のコード:

Sub Test3()
  
  With ActiveSheet.Shapes.AddChart.Chart
    '棒グラフ追加
    .ChartType = xlColumnClustered
    .SetSourceData Range("A1:G8")
    
    'グラフタイトル追加
    .HasTitle = True                            'グラフタイトルの追加
    .ChartTitle.Text = "ユーザー別・言語別点数一覧" 'グラフタイトルの変更

    '行列入れ替え
    Select Case .PlotBy
      Case xlRows
        .PlotBy = xlColumns
      Case xlColumns
        .PlotBy = xlRows
    End Select
  End With

End Sub

実行結果:

軸設定方法

データは軸の最小値最大値を設定したほうが見栄えが良くなりますよね。

軸の最小値、最大値は以下のように書くことで設定できます。

軸の最小値・最大値の設定方法:

.Axes(xlValue).MinimunScale = 値
.Axes(xlValue).MaximumScale = 値
今回は点数なので、0点を最小値、100点を最大値に変更しました。

軸の最小値・最大値変更後のコード:
Sub Test4()
  
  With ActiveSheet.Shapes.AddChart.Chart
    '棒グラフ追加
    .ChartType = xlColumnClustered
    .SetSourceData Range("A1:G8")
    
    'グラフタイトル追加
    .HasTitle = True                                'タイトルの追加
    .ChartTitle.Text = "ユーザー別・言語別点数一覧" 'タイトル名の変更
    
    '軸の最小値・最大値変更
    .Axes(xlValue).MaximumScale = 100
    .Axes(xlValue).MinimumScale = 0
    
    '行列入れ替え
    Select Case .PlotBy
      Case xlRows
        .PlotBy = xlColumns
      Case xlColumns
        .PlotBy = xlRows
    End Select
  End With

End Sub

実行結果:

グラフの参照範囲変更方法

グラフ作成後に、参照範囲を変更したいケースもありますよね。

参照範囲を変更する場合は、以下のように書きます。

参照範囲変更方法:

.SetSourceData Source:=参照範囲をRangeで指定

先ほどのコードに追加すると、以下のようになります。

参照範囲を変更後のコード:

Sub Test5()
  
  With ActiveSheet.Shapes.AddChart.Chart
    '棒グラフ追加
    .ChartType = xlColumnClustered
    .SetSourceData Range("A1:G8")
    
    'グラフタイトル追加
    .HasTitle = True                                'タイトルの追加
    .ChartTitle.Text = "ユーザー別・言語別点数一覧" 'タイトル名の変更
    
    '軸の最小値・最大値変更
    .Axes(xlValue).MaximumScale = 100
    .Axes(xlValue).MinimumScale = 0
    
    '参照範囲の変更
    .SetSourceData Source:=Range("A1:D8")
    
    '行列入れ替え
    Select Case .PlotBy
      Case xlRows
        .PlotBy = xlColumns
      Case xlColumns
        .PlotBy = xlRows
    End Select
  End With

End Sub

実行結果:

合わせて覚えておくと便利なマクロの記録とは

ここまでグラフを作成する方法を解説してきましたが、グラフの種類は棒グラフ以外にもたくさんありますよね。

ChartTypeで指定できるものの、種類が多すぎるためすべて覚えるのは難しいです。

そんな時におすすめなのが、マクロの記録機能です。

マクロの記録を使えば、グラフ作成の操作を自動でVBAのコードに変換することができます。

今回解説したグラフタイトル、軸変更以外にも様々な操作をVBAのコードにすることができるので、事前に作るイメージが決まっている場合はマクロの記録を使うのがおすすめです!

以下で使い方を詳しく解説しているので、気になる方は見てみてくださいね!

【ExcelVBA入門】マクロの記録を使って簡単にマクロを作る方法とは
更新日 : 2019年9月1日

ファイル読み込み機能を組み合わせて自動化ツールを作る方法

グラフ作成方法とあわせてファイルを読み込む方法を覚えておけば、「CSVファイル読み込み→取り込んだデータから自動でグラフ作成」のような、自動化ツールが作れるようになります。

自動化ツールができれば、作業時間を大幅に短縮することができるので、合わせて覚えておくのがおすすめです!

ファイル読み込み方法については以下で詳しく解説しているので、気になる方は以下を見てみてくださいね!

【ExcelVBA入門】QueryTablesメソッドで高速にファイルを読み込む方法
更新日 : 2019年5月23日

補足:作成したグラフを画像にして保存する方法

作成したグラフはExcelだけでなくPowerPointWordなど別の資料作成に使うケースもよくありますよね。

作成したグラフは以下のように書くことで、簡単に画像保存することができるので、覚えておくのがおすすめです!

グラフを画像で保存するサンプルコード:

Sub Test5()
  ActiveSheet.ChartObjects(“グラフの名前”).Chart.Export _
  ThisWorkbook.Path & "\保存するファイル名.jpg"
End Sub

グラフの名前は、以下のようにExcel上でグラフを選択すると、確認することができます。

まとめ

今回は、VBAでグラフを作る方法について解説しました。

VBAでグラフを作ることができれば、データから自動でグラフを作るツールを作れるようになります。

使い方も簡単なので、ぜひ使ってみてくださいね!

LINEで送る
Pocket

ITエンジニアへ転職したい方におすすめ

自分を評価してくれる企業に転職して年収を上げたい! 自分のスキルにあった独自案件を知りたい!
エンジニアは今もっとも注目されている職業の1つ。エンジニアになって年収を増やしたい方や、あなたのスキルに見合った企業へ転職したいエンジニアの方も多いですよね。

しかし、大手の転職媒体は扱う求人数が多くても、誰もが登録しているので競争率もかなり高くなっています。そのため、あなたの条件に見合った企業を見つけても転職するためには、相応の努力とスキルが必要となります。

こういった媒体では、未経験からエンジニアを目指す方やエンジニア歴2〜3年で転職を考えている方にとって、最適な転職環境とはいえません。

そこでオススメしたいのが、未経験者や若手エンジニア向けの独自案件を多く掲載している「侍ワークス」です。

侍ワークスは、独自案件を多く掲載しているだけでなく、

・応募から就業まで一貫したサポート

・就業後もアフターフォロー

といった経験の浅い方や初めてエンジニアを目指す方にも安心のフォロー体制が整っています。もちろん登録は完全無料!しかも案件を見るだけなら登録も不要です。

まずは、お気軽にどんな求人があるか見てみてください。あなたにピッタリの企業がきっと見つかりますよ! 侍ワークスの求人情報を見る

書いた人

Sanshiro Wakizaka

Sanshiro Wakizaka

新卒入社したメーカー系のIT企業で、システムエンジニアとして約5年勤務。
Webアプリ、業務アプリ開発において、要件定義、設計、インフラ、製造、テスト、運用保守など、様々な経験あり。
また、侍ブログ編集部として、これまでに200記事以上の記事を執筆。
現在はフリーランスエンジニア兼テックライターとして活動中。