データシートとは別に「グラフ専用シート」を用意して、自動でグラフを生成する方法について解説します。
分析用・レポート用シートを分けたい場合に非常に有効です。
目次
1. グラフ専用シートの特徴と使うメリット
グラフ専用シートは、Excel の「Chart シート」と呼ばれる種類のシートで、
1つのシートに1つのグラフだけが配置される特殊なレイアウトです。
メリット
- 見やすいレイアウトが自動形成される
- 印刷・PDF 出力に向いている
- ダッシュボード作成時に整理しやすい
- グラフのサイズ調整を気にしなくてよい
2. グラフ専用シートを VBA で作成する基本構文
グラフ専用シートを作成する場合は、Charts.Add を使うか、ChartObjects で作成した後に Location で移動します。
● 最もシンプルな方法(Charts.Add)
Sub CreateChartSheetSimple()
Charts.Add
ActiveChart.ChartType = xlColumnClustered
ActiveChart.SetSourceData Source:=Sheets("Data").Range("A1:B10")
ActiveChart.Location Where:=xlLocationAsNewSheet, Name:="売上グラフ"
End Sub
3. 既存データからグラフ専用シートを作る(安全な実装)
運用では、「同名のグラフシートがあれば削除する」などの処理を入れる方が安全です。
Sub CreateChartSheet()
Dim wsData As Worksheet
Dim rg As Range
Dim cht As Chart
Dim chartName As String
chartName = "売上グラフ"
Set wsData = Sheets("Data")
Set rg = wsData.Range("A1:B10")
'同名のグラフシートが存在すれば削除
On Error Resume Next
Application.DisplayAlerts = False
Sheets(chartName).Delete
Application.DisplayAlerts = True
On Error GoTo 0
'グラフ専用シートの作成
Set cht = Charts.Add
cht.ChartType = xlColumnClustered
cht.SetSourceData Source:=rg
cht.Location Where:=xlLocationAsNewSheet, Name:=chartName
End Sub
ポイント
- グラフ専用シートは
Chartオブジェクト Locationメソッドにより「通常シート→チャートシート」へ変換される- Name を指定すれば、識別しやすいグラフ管理が可能
4. 既存のグラフをグラフ専用シートに移動する方法
普通のシートにあるグラフを後から専用シートに移動することもできます。
Sub MoveChartToSheet()
Dim co As ChartObject
Dim cht As Chart
Dim chartName As String
chartName = "月次売上グラフ"
'Sheet1 上の 1つ目のグラフを取得
Set co = Sheets("Sheet1").ChartObjects(1)
Set cht = co.Chart
'専用シートへ移動
cht.Location Where:=xlLocationAsNewSheet, Name:=chartName
End Sub
5. 複数のグラフを一括して専用シートへ出力する
例えば「支店別」「商品別」など、複数の項目をループで処理して、
それぞれ別のグラフ専用シートを作成することもできます。
Sub CreateMultipleChartSheets()
Dim ws As Worksheet
Dim i As Long
Dim lastCol As Long
Dim cht As Chart
Dim chartName As String
Set ws = Sheets("Data")
lastCol = ws.Cells(1, Columns.Count).End(xlToLeft).Column
For i = 2 To lastCol
chartName = ws.Cells(1, i).Value & "_グラフ"
'同名のシート削除
On Error Resume Next
Application.DisplayAlerts = False
Sheets(chartName).Delete
Application.DisplayAlerts = True
On Error GoTo 0
'グラフ作成
Set cht = Charts.Add
cht.ChartType = xlLine
cht.SetSourceData Source:=ws.Range(ws.Cells(1, 1), ws.Cells(ws.Rows.Count, i).End(xlUp))
cht.Location Where:=xlLocationAsNewSheet, Name:=chartName
Next i
End Sub
6. まとめ
グラフ専用シートを使うと…
- レポート形式の資料に使いやすい
- グラフのレイアウト調整が不要
- 複数のグラフを管理しやすい
といったメリットがあります。
コメント