同じ要素を色分けした折れ線グラフを自動で作成するExcelVBA
Excel2003時代に組んだコードがあったのですが、2013になって使えなくなっちゃったので作りなおしました。ほぼ自分用ですが、誰かの役に立つこともあるかもしれないのでシェア。
概要
こんなデータがありまして
特性が aaa ~ eee というものを、3つずつ測定したデータ、という設定だとします。
基本機能で作成
これをExcel2013の「挿入」→「グラフ」から折れ線グラフを作ってみると、
こういうグラフが出来上がります。全体的なデータの推移は把握できますが、要素ごとの特性っていうのは見えてこないですよね。
今回作ったVBAで作成
このように、同じ名前の要素は同じ色で、マーカーだけ変えた折れ線グラフを作成するVBAを書きました。これだと、全体的な推移に加えて、e特性が上限寄りでc特性が下限寄りだとか、a特性がほぼ中央値だとか、そういった要素ごとの特性というものも見えますよね。
色合いが若干ダサい感じに仕上がっているのは、2003のときのコードが元になっているからです。背景灰色のほうが黄色とか明るい色も見易いし、まぁいっかと思ってw
解説
色分けの他、このような形でできるようになっています。デフォルトだとタイトルは上、凡例は下にできてしまいますが、左側へわざと移動させているのは、
わたしが個人的に、このように凡例部分を固定して、横に長いグラフを作ることが多いからです。この形にしておくと、横にスクロールしていっても読みやすいんです。
凡例の順番はどんな並びでも、同じ文字列は同じ色にします。ただ、半角と全角、大文字小文字などがひとつでも違うと同じ要素として認識できませんのでご注意ください。(スペースなど見えない文字にもご注意)
色は30個まで、ご覧の設定になっています。後半になるとネタ切れで見えにくい色になっちゃってますが…。こちらはコード内の ColorIndex値で変更できます。背景色と一緒に考えるといいかもです。
マーカーは8つめまで指定してあり、色とマーカーはそれぞれ、設定してある数値を超えると自動の値を拾ってきて設定します。
コード
こういうグラフが作れます。データ範囲の制限は設けてありませんが、さすがに数千列とかになると描写に時間がかかるのでほどほどにしたほうが良いかもしれません。
Excel2013/Win7 環境でしか動作確認してませんので、他のバージョンでは…たぶん2007以降なら動くと思うのですが…。
ちなみに、マーカーとか色分けとかいらねー!Excel2013のデフォルトっぽいデザインで自動作成だけしたい!という方にはこちらのコードをご用意しました。
このようなグラフができます。使い方はほぼ一緒で、タイトル凡例左寄せとか、上下限が赤とかそういうとこだけ残して後はデフォルトに近い感じで出来るようにしてみました。
使い方
上記コードをVisualBasicEditorにコピペしてお使いください。
'/************** 手動設定ここから **************/ data_c = "D-M" 'データ範囲の列("A-AA"のように指定) data_r = "3-17" 'データ範囲の行(数値と「,」「-」のみ) label_cs = "C" '凡例ラベルの列(アルファベット) label_r = 2 'データラベルの行(数値) limit1 = 18 '上限の行(数値/無しの場合はゼロ) limit2 = 19 '下限の行(数値/無しの場合はゼロ) title_str = "タイトル" 'グラフタイトル(無しの場合は「""」) line_weight = 0.75 '折れ線の太さ marker_size = 4 'マーカーサイズ(2以上) graph_height = 15 'グラフの高さ(セルの縦数) font_size = 11 'フォントの大きさ horizontally = True 'データラベル横書き(Falseで90°回転) '/************** 手動設定ここまで **************/
基本的には、上の方にあるこのあたりの設定で動きます。色など詳細設定を変えたい場合は、コメントいっぱいつけておいたので探してみてください。
ハイライトしてあるデータ範囲の行は、「-」と「,」を組み合わせて指定することが出来ます。「1,3,5」のような飛び飛びでも、「1-5,7,10-13」のような指定の仕方もできます。
以上です!どなたかのお役に立てたら光栄ですー!
追記
やっぱ、だっせぇなぁーw と思ってしまって、2013っぽい色合いで要素分けできるバージョンもつくりました。(2013のデフォルトの色はColorIndex値ではないので、できるだけ近い色になるように私が適当に並べただけで全く同じ色ではありません)
こんなかんじにできます。
30個までは、こんな色合いになります。
ExcelVBAに興味をお持ちの方は、こちらの記事もどうぞ!
- これからExcelのマクロを始めたいという方に!簡単な練習問題作りました。
- 私がExcelVBAでよく使う便利なコード・スニペットまとめ
- プログラム初心者さんへ贈る、エラーが起きたら試してみて欲しいこと
- ExcelVBAのクラスモジュールって何?という人向けの使い方まとめ
書籍を執筆しています。
コメントは承認制ですので、反映までしばらくお待ち下さい。(稀にスパムの誤判定にて届かないこともあるようですので、必要な際はお問い合わせからお願い致します。)
YouTubeでQ&Aコンテンツを企画しています
運営しているYouTubeチャンネルで、ご相談やご質問を募集しています。動画のコメントやお問い合わせページからお気軽にご相談をお寄せください。