こんにちは、ヒガシです。
このページでは、以下のようにグラフのY軸参照範囲を1列ずつ変えながら
こんな感じのパラパラ漫画グラフを作成する方法をご紹介していきます。
エクセル上でグラフが動いていきますので、時系列でデータがどのように変化しているのかをイメージすることができると思います。
それではさっそくやっていきましょう!
データ範囲の前提条件
今回は冒頭に示した通りデータの参照範囲を変えながら散布図グラフを作成していくわけですが、X軸の値はA列のデータ固定とし、Y軸の値をB列以降の値を設定していきます。
また、1行目はラベル名が入っていることが多いと思いますのでデータの参照範囲は2行目以降に設定しています。
※最終行は自動取得できるようになっています。
またデータの列数ですが、今回は20個までのデータに対応できるようにしています。
列数を増やそうと思ったらプログラムの改造が必要ですのでご注意ください。
参照範囲を変えながらグラフをパラパラ化するサンプルコード
さっそくですが、以下がそのサンプルコードです。
Sub Make_Moving_Graph()
update_speed = 0.4
header_row = 1
start_row = 2
end_row = Cells(Rows.Count, 1).End(xlUp).Row
MsgBox end_row
chart_width = 600
chart_height = 400
num_graph = WorksheetFunction.CountA(Range("B1:U1"))
Cells(1000, 1).Select
ActiveSheet.Shapes.AddChart2(240, xlXYScatterSmoothNoMarkers).Select
ActiveChart.Parent.Name = "Base_Graph"
With ActiveSheet.ChartObjects("Base_Graph")
.Width = chart_width
.Height = chart_height
.Left = 60
.Top = 60
End With
Cells(1, 1).Select
'データの数だけ繰り返す
ActiveSheet.ChartObjects("Base_Graph").Activate
For i = 1 To num_graph
'データ範囲を取得する
X_AXIS = "A" & start_row & ":A" & end_row
Y_AXIS = Chr(65 + i) & start_row & ":" & Chr(65 + i) & end_row
'グラフ(散布図)を挿入する
With ActiveChart
'1つ目のデータ作成
.SeriesCollection.NewSeries
.FullSeriesCollection(1).XValues = ActiveSheet.Name & "!" & X_AXIS
.FullSeriesCollection(1).Values = ActiveSheet.Name & "!" & Y_AXIS
End With
Application.Wait [Now()] + update_speed / 86400
DoEvents
Next
End Sub
基本的には2行目のupdate_speedの値を変更すればパラパラ漫画の実行スピードを変更することができます。
サンプルコードの実行結果確認
最後にサンプルコードを実行してみましょう。
まずはupdate_speed=0.4の結果です。
次はupdate_speed=0.2でやってみます。
あんまり早すぎると処理が追い付かずにカクカクしてますね。笑
まぁいい感じに調整してみてください。
おわりに
というわけで今回はグラフの参照範囲を変えながらパラパラ漫画のように動かす方法をご紹介しました。
データ分析やゲームを作る際などにぜひご活用ください。
このように、私のブログではエクセルスキルはもちろん、様々なプログラミングスキルを紹介しています。
ぜひ他の記事ものぞいてみてください。
コメント