7/19/2018

Excel。マクロ031。最初から非表示列をスパークラインでプロットするにはマクロでやる【Spark line】

Excel。マクロ031。最初から非表示列をスパークラインでプロットするにはマクロでやる

<Excel VBA:スパークライン>

Excel2010から登場した新機能『スパークライン』。

大量のデータを折れ線グラフで動向を確認しようとすると、
何が何だか分からなくなってしまうので、大量のデータを確認するときに、
スパークラインを使うといいわけですが、このスパークライン。

ちょっとしたことで、プラスアルファをしないといけないことがありまして、
それは、非表示列を含めてスパークラインを挿入すると、
ちょっと困ったことになります。

では、C列からF列を非表示にしてみましょう。

一目瞭然ですが、スパークラインは、
可視できるデータのみを使ってプロットする特性があります。

このような場合は、
非表示データも含めてプロットするように指示する必要が生じます。

非表示列も含めて、プロットするには、スパークラインツールのデザインタブにある、
データの編集から、非表示および空白のセルをクリックします。

非表示および空白のセルの設定ダイアログボックスが表示されますので、
「非表示の行と列のデータを表示する」にチェックマークをつけて、
OKボタンをクリックしましょう。

このような処理をすることで、
非表示のデータも含めてプロットすることができますが、
スパークラインを挿入する最初から列が非表示な場合は、
表示することが出来ません。

そこで、一度、プロットしてからでもいいのですが、
Excel VBAでマクロを作ってあげることで、列が非表示であっても、
最初から非常時データを含めた状態でプロットした
スパークラインを挿入することが出来ます。

【Exce VBAでスパークラインを挿入してみる】

まず、単純にスパークラインを挿入するには、
次のようなExcel VBAの構文で挿入することが出来ます。

Sub スパークライン挿入()
    Range("h9:h12").SparklineGroups.Add Type:=xlSparkLine, SourceData:="b9:g12"
End Sub

簡単に説明をすると、
Range("h9:h12").SparklineGroups.Add は、
H9:H12に、SparklineGroups.Add。

つまり、スパークラインを追加するということですね。

それで、折れ線グラフなのか?棒グラフなのか?というのを、
Type:=xlSparkLine で設定するわけですね。

xlSparkLine は、折れ線グラフです。

最後の、SourceData:="b9:g12"は、SourceDataとあるように、
元のデータ範囲ということですね。

では、実行してみましょう。

確かにスパークラインを挿入することはできましたが、
非表示列のデータはプロットされていませんね。

そこで、次のようにExcel VBAの構文をアレンジします。

Sub スパークライン非表示対応()
    Range("h9:h12").SparklineGroups.Add Type:=xlSparkLine, SourceData:="b9:g12"
    Range("h9:h12").SparklineGroups(1).DisplayHidden = True
End Sub

1行目は、同じですので、説明は省略します。

2行目の、
Range("h9:h12").SparklineGroups(1).DisplayHidden = True
について、説明していくと、

H9:H12のスパークラインを、
DisplayHidden = True DisplayHiddenプロシージャーをTrueにすると、
非表示列のデータも含めてプロットしてくれます。

では実行してみましょう。

このように、非表示列のデータも含めて、プロットしてくれました。

データの動向を把握しやすいスパークラインとマクロのコンビネーションは、
相性が比較的いいようですので、使ってみるといいかもしれませんね。