この記事では、エクセルVBAを使って、
①シート上のデータからグラフを作成
②作成したグラフの名前を変更
という一連の作業を行うVBAコードをご紹介していきます。
VBAで資料作成までを行うときなどに、役立つ情報になっていると思います。
それでは早速やっていきます!
※ここで言うグラフの名前とは、グラフ上のタイトルのことではありません。VBAコード上でグラフを指定するときに必要となる名前のことです。
紹介するスキルの概要説明
まずはじめに今回の記事で紹介する内容がどんなときに役立つのかをご紹介しておきます。
VBAでデータ集計などを行っている人からすると、
「そのまま報告資料用のグラフも作りたい。」
と考えるようになるものです。
そんなとき、この記事で紹介するグラフを自動作成するスキルが役に立ちます。
また、作成したグラフの軸設定やグラフの線の色の変更などもVBAで行うことは可能です。
そのような処理を行う際、どのグラフにその作業を適用するのかを指定する必要があります。
しかし、残念ながらシート上にグラフが複数ある場合、どのグラフがなんという名前なのかは人間が確認しなければわかりません。
(※通常エクセル上にグラフを作成するとグラフ1というように適当な番号を振られて名前が付けられています。)
そのような人の目による確認作業を省略するためには、自動で作成したグラフにきちんとあなたがわかる名前をつけておくことが重要です。
そのため今回は、自動でグラフを作成する方法に加えて、グラフを作成したと同時にグラフに名前を設定する方法をセットでご紹介しています。
※変更する名前はあらかじめセル上に記述しておけるようにしています。
紹介するスキルの完成形
今回ご紹介するVBAコードでは以下のような作業を自動で実行していきます。
簡単に説明すると、
①セルに記述された範囲を参照した散布図を作成
②①で作成したグラフの名前をセル(D3セル)データに変更する
※グラフの名前はグラフを選択したときに左上に表示されます。
ということを行っていきます。
今回は上の絵のように線のない、マーカーだけの散布図を作成しますが、この記事中のコードを応用すれば、どんなグラフにも適用可能です。
イメージがつかめた!&自分のやりたいことと一致している!
という方はぜひ続きをご覧ください。
グラフの自動作成&グラフ名変更するVBAコード
それでは早速ですが、先ほど紹介した内容を再現するVBAコードをご紹介します。
※今回はマーカーのみの散布図を作成しています。
◆散布図を作成⇒グラフ名変更するVBAコードサンプル
Sub Make_graph()
Dim GRF_name_B As String
Dim C_name As Integer
Dim GRF_name_A As String
'作成後のグラフ名
GRF_name_A = Range("D3")
'データ範囲を取得する
X_AXIS = Range("E3")
Y_AXIS1 = Range("F3")
Y_AXIS2 = Range("G3")
'ベースとなるグラフを挿入する
ActiveSheet.Shapes.AddChart2(-1, -4169).Select
With ActiveChart
'1つ目のデータ作成
.SeriesCollection.NewSeries
.FullSeriesCollection(1).XValues = ActiveSheet.Name & "!" & X_AXIS
.FullSeriesCollection(1).Values = ActiveSheet.Name & "!" & Y_AXIS1
'2つ目のデータ作成
.SeriesCollection.NewSeries
.FullSeriesCollection(2).XValues = ActiveSheet.Name & "!" & X_AXIS
.FullSeriesCollection(2).Values = ActiveSheet.Name & "!" & Y_AXIS2
'グラフの名前を変更する
.Parent.Name = GRF_name_A
End With
End Sub
コードのポイント解説①
VBAでグラフを自動作成するには
ActiveSheet.Shapes.AddChart2(-1,*)
というスキルを使います。
今回紹介した散布図以外のグラフを作成したい場合、この*を変更する必要があります。
この部分に入力する数値と出力すれるグラフの一覧表は以下のマイクロソフトの公式ページに記載されておりますので、ご確認ください。
Xlcharttype クラス列挙 (Excel) | Microsoft Docs
例えば3-D縦棒グラフを作成したい場合は、
ActiveSheet.Shapes.AddChart2(-1,-4100)
と変更すればOKです。
コードのポイント解説②
グラフデータを参照するには、With構文内で以下のように記述します。
.SeriesCollection.NewSeries
.FullSeriesCollection(1).XValues = 【X軸範囲】
.FullSeriesCollection(1).Values = 【Y軸範囲】
書き方は上のコードを参考にしてください。
また、今回は2つのデータを参照するように作っています。
データ数を増やしたい場合は、適宜状況に応じてコード、エクセルシードを追記してください。
コードのポイント解説③
VBAでグラフの名前を変更するには、同じくWith構文内で以下のように記述します。
.Parent.Name = 新しいグラフ名
とすればOKです。
コードの解説はこのくらいにして、最後にグラフの範囲をθ=0~70degの範囲に変更、グラフ名も新たに指定してこのマクロを実行してみましょう。
以下のように、問題なく指定範囲のグラフ化、グラフ名変更(画像左上のSIN0-70)が行われていることが確認できました。
◆合わせて読みたい!
仮にこの状態から、
「X軸、Y軸の最大値、最小値を変更したい」
【VBA】グラフ軸の数値レンジを自動調整するマクロ!Inputboxを使って簡単設定!
「X軸、Y軸を指数表示にしたい」
【VBA】グラフ軸を指数形式に変更するマクロ!桁数指定も可能!
「軸タイトルを設定したい」
【VBA】グラフのx軸、y軸のタイトルを自動作成するマクロ!Inputboxで簡単設定!
という方は、それぞれの要望に対して解説記事を載せておきますので、あわせてご確認ください。
おわりに
というわけで今回はVBAを使ってグラフの自動作成、グラフ名変更という一連の流れを行うVBAコードをご紹介しました。
これができれば、VBAで報告資料作成までを自動で行うことができるようになるはずです。
ぜひ日々の業務効率改善にご活用ください。
このように私のブログではエクセルスキルはもちろん、様々なプログラミングスキルを紹介しています。
・日々の残業時間を減らしたい。
・業務をもっと効率的にこなしたい。
・もっと勉強する時間を作りたい。
こんな思いを持っている人は、ぜひ他の記事も見てみてくださいね。
この記事が役に立ったという方は、ぜひ応援よろしくお願いします。
↓ 応援ボタン
それではまた!
コメント