こんにちは、Ryoです。
最近何かと慌ただしく更新停滞しておりましたが、今後も合間をみて更新していきますので何卒宜しくお願い致します。こちらも雪の影響がかなりありまして大変な思いをしたのもあり、雪景色の画像にしてみました。
それで本題ですが、Excelのデータを視覚的にわかりやすくする手段の一つとして条件付き書式のアイコンセットがあります。このアイコンセットをVBAで使用するにはAddIconsetConditionメソッドを使うことで実行できますので、今回はその内容について書いていきます。
1.サンプル概要
サンプルとして以下画像のような表があるとします。その中の点数について、50点未満を「赤信号」とし50点を超えて85点未満を「黄色信号」、85点以上を「緑信号」とするアイコンを表示します。
■実行前
■実行後
こんな形でアイコン表示することが出来ます。
2.サンプルコード
Sub Sample1() 'IconSetCondition型を変数にセット Dim Icn_set As IconSetCondition 'セルC7~C16に条件付き書式の設定(アイコンセット) Set Icn_set = Range(Cells(7, 3), Cells(16, 3)).FormatConditions.AddIconSetCondition With Icn_set 'アイコンの種類を信号3色(枠なし)に設定する .IconSet = ActiveWorkbook.IconSets(xl3TrafficLights1) '2番目のアイコン(黄色)に対する処理 With .IconCriteria(2) '閾値を数値にする .Type = xlConditionValueNumber '閾値を50にする .Value = 50 '演算子を「以上」にする .Operator = xlGreaterEqual '************************************************************** '【参考】演算子 'xlEqual:等しい xlGreater:~より大きい xlGreaterEqual:以上 'xlLess:~より小さい xlLessEqual:以下 xlNotEqual:~と異なる '他には、xlBetween(数値AとBの間)やxlNotBetween(数値AとBの間以外) '*************************************************************** End With '3番目のアイコン(緑色)に対する処理 With .IconCriteria(3) '閾値を数値にする .Type = xlConditionValueNumber '閾値を85にする .Value = 85 '演算子を「以上」にする .Operator = xlGreaterEqual End With End With '変数の解放 Set Icn_set = Nothing End Sub
条件付き書式のアイコンセットはAddIconsetConditionメソッドを使用します。
オブジェクト.AddIconsetCondition
このAddIconsetConditionメソッドは指定したセル範囲の値を元にして、設定した条件に合わせて異なるアイコンを表示するものです。このオブジェクトにはFormatConditionsコレクションを使用します。
◆アイコンセット一覧
組み込まれているアイコンセットは以下になります。
本当は一覧でリスト表示したかったのですが、アイコン画像と合わせて表示する都合上、画像にしておりますのでご不便をお掛けするかもしれませんが、ご容赦くださいませ。
このアイコンセットはブックのIconSetsコレクションなので、「Workbookオブジェクト.IconSets(定数)」の形で記述します。サンプルコードでは
.IconSet = ActiveWorkbook.IconSets(xl3TrafficLights1)
この部分になりますね。
また、アイコンセット選択する際の指定ですが上表のアイコン並びに対し右からIconCriteria(1)、2番目はIconCriteria(2)となりますので、ご留意ください。
◆サンプルコード解説
サンプルコード内のコメントで記述していますので、改めて解説することもそれほどないのですが、使う場合はIconSetCondition型の変数を宣言して、指定セル範囲に対し条件付き書式の設定とIconSerConditionオブジェクトを変数に格納します。
Dim Icn_set As IconSetCondition
Set Icn_set = Range(Cells(7, 3), Cells(16, 3)).FormatConditions.AddIconSetCondition
後はWithを使用してアイコンのセットや閾値のセット等に関する記述をすればOKです。閾値を設定する際の演算子はコメントで記述してありますので、ご参考にしてください。
With Icn_set
.IconSet = ActiveWorkbook.IconSets(xl3TrafficLights1)
With .IconCriteria(2) ⇒2番目なので「黄色信号」
.Type = xlConditionValueNumber ⇒数値としての閾値
.Value = 50 ⇒ 閾値
.Operator = xlGreaterEqual ⇒演算子として「以上」
End With
3.【参考】:条件付き書式のクリア
参考までに指定セル範囲のクリア、及びアクティブシートのクリア方法について以下にサンプルコードを記載します。
◆指定セル範囲の条件付き書式クリア
Sub Sample2() '指定セル範囲内の条件付き書式消去 Range(Cells(7, 3), Cells(16, 3)).FormatConditions.Delete End Sub
Rangeで範囲を指定し、.FormatConditions.DeleteとすればOKです。
◆アクティブシート上の条件付き書式クリア
Sub Sample3() 'アクティブシート上の条件付き書式消去 Cells.FormatConditions.Delete End Sub
この場合はCellsに対して同様の記述でOKですが、アクティブシート全域に対して実行されますので、使用時はご注意くださいませ!
4.まとめ
アイコンセットは意外と知られてなかったり使われてなかったりしますが、Excel上から使う場合はやや閾値設定が面倒だったりするからかもしれませんね。個人的には寧ろVBAの方が簡単に扱えるような気がします。
Excelに限らず、結果のビジュアル化というのは自分にも人にも優しいので知っていると有効活用できる場面が多々あるのではないかと思い書いてみました。もし使えそうな機会などありましたら、ぜひご検討くださいませ。
以上、条件付き書式(アイコンセット)を設定する方法についてでした!
今回の記事が何かの参考になれば幸いです。
Ryo