見出し画像

Excelマクロによるグラフの書式変更とデータ解析

私は業務でデータ解析を行うことがあります。
データサイエンティストの方々は、Pythonを使って解析からグラフ表示まですべて済ませてしまうようですが、私はExcelのグラフをよく使います(さすがに複雑な計算には使いませんが)。

今回の記事では、Excelのマクロを使って、グラフの書式を素早く変更する方法をまとめました。

解析結果をExcelでグラフ化

Excelは数値データをすぐにグラフ表示できて便利ですが、一つ困ったことがあります。大量の折れ線やマーカーの書式を簡単に変更できないことです。

例えば、次のグラフを作ったとします。
これは、2022年の1月1日~2月28日の東京の気温を1日1本の折れ線グラフで表現したものです。

気温の出典は気象庁のホームページからです

非常に込み入っているので、線幅を最小にしたいところですが、Excelでは1本ずつ変更するしかありません。これを数十回も繰り返すのは大変です。

マクロによる解決

調べたところ、現バージョンのExcelでは、線やマーカーをまとめて変更する機能は入っていないようです。
代わりに、マクロでまとめて変更する方法が見つかりました。

Excelのマクロというと悪いイメージしかありませんが、大量のマクロでシステム化するわけでもないので、目をつぶることにします(セキュリティには要注意ですが)。

手順は次の通りです。

まず、ボタンの代わりになる適当な図形(下の図では青い四角形)を挿入し、右クリックしてメニューの「マクロの登録」を実行します。

「マクロの登録」画面で「新規作成」ボタンをクリックすると、Visual Basic for Applicationsのコード編集画面になります。
空の関数が定義されているので、その内部にプログラムを追加します。

表示中のシートで、すべての折れ線グラフの太さを最小にするには、以下のようなコードを貼り付けます。

Sub 正方形長方形2_Click()
    Dim i, j As Long
    For i = 1 To ActiveSheet.ChartObjects.Count
        For j = 1 To ActiveSheet.ChartObjects(i).Chart.SeriesCollection.Count
            With ActiveSheet.ChartObjects(i).Chart.SeriesCollection.Item(j)
                .Format.Line.Weight = 0.25
            End With
        Next j
    Next i
End Sub

以下は、散布図のマーカーサイズを最小にしたい場合です。

Sub 正方形長方形2_Click()
    Dim i, j As Long
    For i = 1 To ActiveSheet.ChartObjects.Count
        For j = 1 To ActiveSheet.ChartObjects(i).Chart.SeriesCollection.Count
            With ActiveSheet.ChartObjects(i).Chart.SeriesCollection.Item(j)
                .MarkerStyle = xlMarkerStyleCircle
                .MarkerSize = 2
            End With
        Next j
    Next i
End Sub

入力後、Excelに戻って図形をクリックすると、マクロが実行されます。
この通り、潰れていた部分が見えるようになります。

個別データの分析

このマクロはグラフの書式を変更するだけですが、個別の傾向が分析しやすくなるという効果があります。

先ほどの折れ線グラフは東京の2022年1月1日~2月28日の気温ですが、いくつか傾向が違う日が見えてきます。
例えば、下の図で選択中の日は、他の日と傾向が違います。
Excelでは折れ線をクリックすると、元データのセルが強調されるため、これは2022年1月11日であることが分かります。

1月11日は何か特別だったのでしょうか。
「ウェザーニュースLiVE」のアーカイブで、天気の解説が見られます。
開始後1:46:13あたりの解説によると、この日は低気圧の通過で雨とのことです。

東京の冬は乾燥した晴れの日が多いため、雨で1日中肌寒い状況は、普段とは異なるグラフとなって現れたようです。

個別のデータを見る意味

今回のマクロは、グラフのデータの見た目を変えるだけのものですが、データを理解する糸口にもなります。

データの傾向は平均や分散などで表現できてしまいますが、これだけでは標準に合わないデータを見過ごしてしまいます。雨の日に対応できないような結果になりかねません。

個別の値の変化を眺めながら、標準に合わないデータを異常値として扱うべきか、別のデータモデルとして扱うべきか、あるいは計測ノイズとみるべきか……、データの背景に思いを巡らせるのは楽しい作業です。

というわけで、Excelの書式を変えるマクロと、その利用例の紹介でした。
何かの参考になれば幸いです。