○第41回目 こんな簡単だったのか!緊急講座、グラフ編
※エクセル2007で作成したものです。
いつかグラフを取り上げる時がくるので、その材料を集めていましたが、その中で非常に簡単で有益で面白いものがありましたので紹介します。
(残念ながら、エクセル2007で作成したので、エクセル2003の場合、コマンドが異なっているため動きません。操作マクロの記録をとって各自アレンジするしかないようです)
グラフの作成というといつも心理的なおっくうさがありました。範囲を指定してウイザードでグラフを作る。そこまではいいのですが、その後のタイトルを入れる、Y軸のメモリを修正するという部分です。マウスを使って、細かな指定をしなければならないので、キーボード派にとっては、なんとなくめんどくさいなと思ってしまうのです。うまくそのものをクリックできないのも要因の一つです。
グラフを作るということのほとんど80%ほどは単純なものです。それをもっと簡単にすっきりと出来たらどうだろう、というのが長年の思いでした。
それが出来るのでした。感激します。
グラフを作るときに必要な情報は…
使用するデータ、タイトル、Y軸のメモリ(最小値、最大値、メモリの幅)であり、
使用するデータは分解すると、データがあるシート名とデータの範囲座標です。新規一括作成の場合は、データ系列の名前、X軸の表示内容、データ値は一緒にして一つの指定で可能です。
それを、セルに入れておいて(下のような内容を。最後のものはY軸の表示桁数)、これを基にグラフを作れというマクロになります。
XXXXの推移、sheet01、$B$16:$O$107、-0.05、0.05、0.01、0.000(文字)
(それぞれの項目は一つのセルにいれ、下に向かって入力する。当該シートのデータを使う場合はシート名はヌルでも可能)
最初のセルにカーソルをおいてからマクロを動かすようにしました。
主な処理は次のようになります。
'グラフの作成
ActiveSheet.Shapes.AddChart.Select
ActiveChart.SetSourceData Source:=Range(sh_name & "!" & han_i)
ActiveChart.ChartType = xlLine '折れ線グラフのことです
ActiveChart.Axes(xlValue).Select
ActiveChart.Axes(xlValue).MinimumScale = y_min
ActiveChart.Axes(xlValue).MaximumScale = y_max
ActiveChart.Axes(xlValue).MajorUnit = y_memori
Selection.TickLabels.NumberFormatLocal = y_keta
'タイトルの設定
ActiveChart.SetElement (msoElementChartTitleAboveChart) 'グラフの外側に設定
' ActiveChart.SetElement (msoElementChartTitleCenteredOverlay) 'オーバーレイ。グラフと重なるということ。
ActiveChart.ChartTitle.Text = g_title
'グラフ専用シートを追加し移動。2007の場合、グラフはシート埋め込み型になるので専用シートへの移動が必要となりました
ActiveChart.Location Where:=xlLocationAsNewSheet
この前に、セルにあるパラメータを取得すればいいことになります。
次のようになります。
'設定されたセルの座標を取得
AAA = Selection.Address
AAA1 = AAA
retu1 = Range(AAA1).Column
gyo1 = Range(AAA1).Row
'パラメータの取得
g_title = Cells(gyo1, retu1)
If Cells(gyo1 + 1, retu1) <> "" Then
sh_name = Cells(gyo1 + 1, retu1)
Else
sh_name = ActiveSheet.Name
End If
han_i = Cells(gyo1 + 2, retu1)
y_min = Cells(gyo1 + 3, retu1)
y_max = Cells(gyo1 + 4, retu1)
y_memori = Cells(gyo1 + 5, retu1)
y_keta = Cells(gyo1 + 6, retu1) '表示ケタ。例えば0.000という与え方。文字で与える
これを前後してつなげるとグラフ新規一括作成のマクロとなります。
前にも言いましたが、グラフ関係は2007と2003とで大きな差があるようです。ちょっとした文法が異なるために、動かないなんて、もったいないです。
よく考えれば、マクロの勉強になるのでいいのかもしれません。
マクロの一括作成を、操作マクロの記録で取って見れば、後半の部分の修正がわかると思います。
このマクロは心理的にもかなり効率的だと思いましたので、順番を省みずにご紹介しました。

0 件のコメント:
コメントを投稿