スパークラインとは
スパークラインとはExcel 2010で追加された機能です。セル内に表示するグラフのことで、折れ線、縦棒、勝敗の3種類があります。
折れ線と縦棒はセルの値を範囲内の相対でグラフ化されます。勝敗はセルの値の大きさではなく正か負かでグラフ化されます。なぜ「正負」などの分かりやすい名前で命名しなかったのか疑問ですね。
以下のF列とG列のような表示になります。
なお、Excelでスパークラインを作成するには、スパークラインを設定するセル範囲を選択して、挿入タブ→スパークライン、から設定します。
設定時に以下の範囲設定ダイアログが表示されます。
スパークラインの追加
セルにスパークラインを追加するには、SparklineGroupsコレクションのAddメソッドを使います。
データは上の画像を例にします。
1 2 3 |
Sub SetSparkLine() Call Range("F2:F4").SparklineGroups.Add(xlSparkLine, "B2:E4") End Sub |
Rangeでスパークラインを追加する範囲を指定します。
Addメソッドの引数は2つあります。
1つ目:スパークラインの種類を設定します。折れ線(xlSparkLine)、縦棒(xlSparkColumn)、勝敗(xlSparkColumnStacked100)のいずれかを設定します。
2つ目:元データの範囲を指定します。
Rangeの範囲とAddメソッドの2つ目の引数の範囲の行数が違う場合はエラーになります。
スパークラインの削除
Excelでスパークラインを削除するには、スパークラインツールタブ→クリア を押します。Deleteキーで削除されないのが不便ですね。なぜこんな仕様にしたのでしょうか。MSの不可解仕様の1つですね。間違ってDeleteキーを押すことを回避するための仕様かもしれませんが、セルの入力も同じ話ですからCtrl + Z対応すればいいだけと思うのですけどね。
で、VBAでのスパークラインの削除は以下のようになります。
スパークラインにはグループの概念があります。
上記画像のように同じ種類のスパークラインが複数セルにある場合は同じグループとみなされます。
削除の際には以下のようにグループ単位なのかセル単位なのかを指定します。
1 2 3 4 |
'// 選択セルと同じグループ削除 Sub ClearGroupSparkLine() Selection.SparklineGroups.ClearGroups End Sub |
1 2 3 4 |
'// 選択セルのみ削除 Sub ClearSparkLine() Selection.SparklineGroups.Clear End Sub |