カテゴリー: 条件付き書式

  • 行全体や列全体の背景色を変更する

    行全体や列全体の背景色を変更する

    Excelで表を使用している場合、特定の条件に該当する箇所を色付けしたくなります!それが条件付き書式ですよね!

    そして、それをより目立たせるために行うのが、行全体とか列全体の背景色を変える条件付き書式です

    ■行全体のサンプル

    以下のサンプル画像は、『平均点が82点以上の行の背景色を色付け』したものです

    この『平均点が82点以上の行の背景色を色付け』は、どのような手順で行うかを順を追って説明していきます!

    ■行全体の設定手順

    ・選択範囲

    ①まずは背景色を設定する範囲を選択します

    ポイントは、以下の2点(同じことを言うてるんですけどねw)

    • ヘッダ行を含めないこと
    • データ行のみを選ぶこと

    フィルターのイメージで、ヘッダ行を選択範囲に含めてしまう人が多いかと思いますが、それがそもそもの間違いなのです!

    「ヘッダ行は要らない」をお忘れなく!w

    ※背景色を塗りたい範囲は、名前や合計、平均の列を塗りたくない場合は、範囲から外してください

    ・新しいルールを選択

    ②選択範囲が決まれば、条件付き書式から「新しいルール」を選択します

    『・・・82点以上の・・・』なので、

    「セルの強調表示ルール」にある「指定の値より大きい」を選んぶ人がいます

    しかし、それを選ぶと『平均点が82点以上の・・・』が指定できません

    ・数式を指定して、書式設定するセルを決定

    ③「新しい書式ルール」の画面では、「数式を指定して、書式設定するセルを決定」を選択します

    『平均点が82点以上・・・』を指定するためには、数式を使用する必要があります!

    ・次の数式を満たす場合に値を書式設定

    そして一番の肝となるのは「次の数式を満たす場合に値を書式設定」です

    ④セルを指定するため、カーソル(キャレット)をテキストボックスに設定します

    ※「ルールの種類」が選択された状態だと、セルが選択できません

    – 数式に使用する対象セルを選択

    次に、『平均点が・・・』を示すために、

    ⑤「平均」列の最初のデータ(選択範囲の先頭行)を選択します!

    ※「次の数式を満たす場合に値を書式設定」には、「=$M$4」と設定されます

    ここで、ありがちなミスは以下のようなものがあります

    • 平均の列を選択してしまう(「=$M:$M」と設定)
    • 平均の列のデータを全て選択してしまう(「=$M$4:$M$8」と設定)

    ※「該当行だけ」を設定できない

    このありがちなミスをすると、正しく「該当行だけ」の背景を色付けしたくても、「該当行以外」の背景まで色付けしてしまうのです!

    「表全体にこの条件式を設定しなければならない」と考えて、「平均」列を範囲指定してしまうのだと思いますが・・・

    思い出してください

    一番最初に、『条件式を適応させるための範囲を選択している』ことを!!!

    つまり・・・既に表全体の範囲は選択済みです

    だから・・・数式に範囲を指定する必要がありません

    – 閾値を設定

    それでは数式にを完成させます

    答えから言うと数式は『平均点が82点以上の行・・・』なので、

    ⑥「=$M4>=82」と変更します!(先頭の「=」を消さないこと!)

    セルを選択した際には、「=$M$4」と行側にも固定を意味する「$」がありましたが、これを削除します

    「$4」の「$」を削除しないと、全ての行の判定で「M4」(M列の4行目)を見てしまいます

    各行毎に判定したいのに、固定で4行目の「平均」(M列)を見てしまうことになります

    ・書式を設定

    ⑦あとはお好みの書式『・・・背景色を色付け』を設定すれば、完成ですね!

    ・マクロを確認

    ちなみに上記の手順をマクロに記録した結果は以下になります

    Sub Macro80()
    '
    ' Macro80 行全体
    '
    '
        Range("B4:M8").Select
        Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=$M4>=82"
        Selection.FormatConditions(Selection.FormatConditions.count).SetFirstPriority
        With Selection.FormatConditions(1).Interior
            .PatternColorIndex = xlAutomatic
            .ThemeColor = xlThemeColorAccent4
            .TintAndShade = 0.799981688894314
        End With
        Selection.FormatConditions(1).StopIfTrue = False
    End Sub

    ■列全体のサンプル

    以下のサンプル画像は、『平均点が82点以上の列の背景色を色付け』したものです

    列の場合の違いは、選択範囲と数式ですね!

    そこだけ抽出して以下に記載します

    ■列全体の設定手順

    ・選択範囲

    まずは背景色を設定する範囲を選択します

    ポイントは、以下の2点(これまた同じことを言うてるんですけどねw)

    • ヘッダ列を含めないこと
    • データ列のみを選ぶこと

    この辺りは、もうお判りでしょう!

    ・新しいルールを選択

    行全体の時と同様に「新しいルール」で「数式を指定して、書式設定するセルを決定」を選択して設定します

    ※この辺りは、行全体を参照してください

    ・次の数式を満たす場合に値を書式設定

    この数式が行全体とは書き方が微妙に異なる点を注意してください

    – 数式に使用する対象セルを選択

    選択する対象セルは、一番左側(選択範囲の先頭)の「平均」ですね!

    「=$C$10」と設定されます

    – 閾値を設定

    そして行とは違って、列ですから、列「$C」の固定「$」を削除します

    条件は列全体も同じく『平均点が82点以上の列・・・』なので「=C$10>=82」です!

    ・書式を設定

    書式『・・・背景色を色付け』を設定して完成です

    ・マクロを確認

    同様に列全体の手順をマクロに記録した結果は以下になります

    Sub Macro81()
    '
    ' Macro81 列全体
    '
    '
        Range("C2:K10").Select
        Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=C$10>=82"
        Selection.FormatConditions(Selection.FormatConditions.count).SetFirstPriority
        With Selection.FormatConditions(1).Interior
            .PatternColorIndex = xlAutomatic
            .ThemeColor = xlThemeColorAccent4
            .TintAndShade = 0.799981688894314
        End With
        Selection.FormatConditions(1).StopIfTrue = False
    End Sub

    ■上手くいかない?(2025年12月追記)

    【問題】

    上記の通りに設定したのに、条件を満たしても背景色が変わらない!?

    【原因】

    それ!実は正しく設定したつもりでも、Excelがおかしく設定することがあります!

    正確な理由はわかりませんが、、、

    ほとんどの場合、書式の適用先が変な数字(凄く大きな数字)になっています

    過去の経験でいうと、書式を設定したい範囲を選択する際に、行なら左から、列なら上から範囲選択をしないと、この現象が起きることがありました

    【対策】

    あなたが設定した項目をExcelが正しく設定しているかを再確認しましょう!

    ※あとありがちなのは、複数のルールが同じセルに設定されていて、
     ルールの優先順位が間違っていたりすることもありますので、
     その時は、ルールの複製の右にある上下の矢印でルールを移動させましょう!

    ■最後に

    もー少し失敗例を出した方がよかったかと思いましたが、判りましたでしょうか!?

    行全体や列全体に条件付き書式を設定する場合の注意点は以下の通りですねー

    • 最初に条件を適応する範囲を選択している
    • 条件を適応する範囲はヘッダ部を含まない
    • 条件式の固定すべきは行なのか列なのかを間違えない

    このあたりに注意してご利用ください!w

    ・FormatConditionsについて

    マクロに出てくるFormatConditionsプロパティについては、以下のサイトを参考にしてください

    参考サイト:「FormatConditions プロパティ (Excel) | Microsoft Docs

    ・VBAマクロの詳細な説明は・・

    VBAマクロの詳細な説明は、第一弾の以下の「指定の値より大きい」を参照してください

    [blogcard url=”https://zesys.net/excel/formatconditions/style-conditional-format-vol1/”]Excel 条件付き書式について ~その1:セルの強調表示ルール~[/blogcard]

    ではでは

  • アイコンセット

    アイコンセット

    条件付き書式の第五弾!アイコンセットについて調べていきます

    サンプルソースの詳細な説明は、第一弾の以下の「指定の値より大きい」を参照してください

    [blogcard url=”https://zesys.net/excel/formatconditions/style-conditional-format-vol1/”]Excel 条件付き書式について ~その1:セルの強調表示ルール~[/blogcard]

    ■種類

    まずはExcelのスタイルにある「条件付き書式」を開いてみます

    条件付き書式
    アイコンセット
    条件付き書式

    簡単なものであれば、デフォルトで用意されている書式ルールを利用しても充分です

    今回は「アイコンセット」について順に書式ルール毎に見ていきましょう

    ■アイコンセット

    これはセルの値が特定の範囲の場合に、アイコンでセルを強調表示させるためのルールです

    アイコンセット

    一番下にある「その他のルール」を選択した場合は、以下のような新しい書式ルールの画面が表示されます

    その他のルール

    「セルの強調表示ルール」でも使用した以下のデータをサンプルにして、条件付き書式を施してみます

    条件付き書式-サンプルデータ
    サンプルデータ

    条件付き書式の対象範囲は、上図のサンプルデータの背景色が白い点数部分を対象として行います(範囲[Range]は「C4:K8」です)

    ・方向

    指定した範囲の値のセルに対して、指定したアイコンを施します

    種類と数の異なるアイコンセットを選ぶだけですね

    – 書式ルールを確認

    3つの矢印(色分け)

    – マクロで記録してみる

    3つの矢印(色分け)の設定をマクロを使って、保存した結果が以下のVBAソースです

    Sub Macro40()
    '
    ' Macro40 方向
    '
    
    '
        Range("C4:K8").Select
        Selection.FormatConditions.AddIconSetCondition
        Selection.FormatConditions(Selection.FormatConditions.count).SetFirstPriority
        With Selection.FormatConditions(1)
            .ReverseOrder = False
            .ShowIconOnly = False
            .IconSet = ActiveWorkbook.IconSets(xl3Arrows)
        End With
        With Selection.FormatConditions(1).IconCriteria(2)
            .Type = xlConditionValuePercent
            .Value = 33
            .Operator = 7
        End With
        With Selection.FormatConditions(1).IconCriteria(3)
            .Type = xlConditionValuePercent
            .Value = 67
            .Operator = 7
        End With
    End Sub

    – マクロの説明

    ・簡単に説明

    ※VBAソースの詳細な説明は、その1の「指定の値より大きい」を参照

    8行目:[AddIconSetConditionメソッド]で追加

    9行目:優先順位の設定

    10-14行目:条件の設定

    • .ReverseOrder = False は「アイコンの順序を逆にしない」
    • .ShowIconOnly = False は「アイコンのみ表示」を「しない」
    • .IconSet = ActiveWorkbook.IconSets(xl3Arrows) は「3つの矢印」

    15-19行目:2番目のアイコンの条件設定

    • .Type = xlConditionValuePercent は種類が「パーセント」
    • .Value = 33 は値が「33」
    • .Operator = 7 は演算子が「以上」[xlGreaterEqual]

    20-24行目:3番目のアイコンの条件設定

    • .Type = xlConditionValuePercent は種類が「パーセント」
    • .Value = 67 は値が「67」
    • .Operator = 7 は演算子が「以上」[xlGreaterEqual]

    ※1番目のアイコンの条件設定は2番目と3番目の条件以外なので記載しません

    ・図形

    指定した範囲の値のセルに対して、指定したアイコンを施します

    ここでは「4つの信号」を例に見ていきます

    – 書式ルールを確認

    4つの信号

    – マクロで記録してみる

    方向と図形でどんな違いがあるのでしょうか?

    Sub Macro41()
    '
    ' Macro41 図形
    '
    
    '
        Range("C4:K8").Select
        Selection.FormatConditions.AddIconSetCondition
        Selection.FormatConditions(Selection.FormatConditions.count).SetFirstPriority
        With Selection.FormatConditions(1)
            .ReverseOrder = False
            .ShowIconOnly = False
            .IconSet = ActiveWorkbook.IconSets(xl4TrafficLights)
        End With
        With Selection.FormatConditions(1).IconCriteria(2)
            .Type = xlConditionValuePercent
            .Value = 25
            .Operator = 7
        End With
        With Selection.FormatConditions(1).IconCriteria(3)
            .Type = xlConditionValuePercent
            .Value = 50
            .Operator = 7
        End With
        With Selection.FormatConditions(1).IconCriteria(4)
            .Type = xlConditionValuePercent
            .Value = 75
            .Operator = 7
        End With
    End Sub

    – マクロの説明

    ・異なるところだけを説明

    ※VBAソースの詳細な説明は、その1の「指定の値より大きい」を参照

    13行目:条件の設定

    • .IconSet = ActiveWorkbook.IconSets(xl4TrafficLights) は「4つの信号」

    25-29行目:4番目のアイコンの条件設定

    • .Type = xlConditionValuePercent は種類が「パーセント」
    • .Value = 75 は値が「75」
    • .Operator = 7 は演算子が「以上」[xlGreaterEqual]

    つまり方向と図形の違いとしては、アイコンセットの種類と4番目のアイコンが増えたことによる違いしかない!

    ・インジケーター

    指定した範囲の値のセルに対して、指定したアイコンを施します

    ここでは「3つのフラグ」を例に見ていきます

    – 書式ルールを確認

    3つのフラグ

    – マクロで記録してみる

    インジケーターは何が違うのか!?って・・予想は付きますがw

    Sub Macro42()
    '
    ' Macro42 インジケーター
    '
    
    '
        Range("C4:K8").Select
        Selection.FormatConditions.AddIconSetCondition
        Selection.FormatConditions(Selection.FormatConditions.count).SetFirstPriority
        With Selection.FormatConditions(1)
            .ReverseOrder = False
            .ShowIconOnly = False
            .IconSet = ActiveWorkbook.IconSets(xl3Symbols2)
        End With
        With Selection.FormatConditions(1).IconCriteria(2)
            .Type = xlConditionValuePercent
            .Value = 33
            .Operator = 7
        End With
        With Selection.FormatConditions(1).IconCriteria(3)
            .Type = xlConditionValuePercent
            .Value = 67
            .Operator = 7
        End With
    End Sub

    – マクロの説明

    ・異なるところだけを説明

    ※VBAソースの詳細な説明は、その1の「指定の値より大きい」を参照

    13行目:条件の設定

    • .IconSet = ActiveWorkbook.IconSets(xl3Symbols2) は「3つのフラグ」

    違いについては、やはりそうですねー!予想通りでしたねーw

    ・評価

    指定した範囲の値のセルに対して、指定したアイコンを施します

    ここでは「5種類のボックス」を例に見ていきます

    – 書式ルールを確認

    5種類のボックス

    – マクロで記録してみる

    評価は何が違うんでしょうねっ!?・・もぅ、お判りでしょうけどw

    Sub Macro44()
    '
    ' Macro44 評価
    '
    
    '
        Range("C4:K8").Select
        Selection.FormatConditions.AddIconSetCondition
        Selection.FormatConditions(Selection.FormatConditions.count).SetFirstPriority
        With Selection.FormatConditions(1)
            .ReverseOrder = False
            .ShowIconOnly = False
            .IconSet = ActiveWorkbook.IconSets(xl5Boxes)
        End With
        With Selection.FormatConditions(1).IconCriteria(2)
            .Type = xlConditionValuePercent
            .Value = 20
            .Operator = 7
        End With
        With Selection.FormatConditions(1).IconCriteria(3)
            .Type = xlConditionValuePercent
            .Value = 40
            .Operator = 7
        End With
        With Selection.FormatConditions(1).IconCriteria(4)
            .Type = xlConditionValuePercent
            .Value = 60
            .Operator = 7
        End With
        With Selection.FormatConditions(1).IconCriteria(5)
            .Type = xlConditionValuePercent
            .Value = 80
            .Operator = 7
        End With
    End Sub

    – マクロの説明

    ・異なるところだけを説明

    ※VBAソースの詳細な説明は、その1の「指定の値より大きい」を参照

    13行目:条件の設定

    • .IconSet = ActiveWorkbook.IconSets(xl5Boxes) は「5種類のボックス」

    25-29行目:4番目のアイコンの条件設定

    • .Type = xlConditionValuePercent は種類が「パーセント」
    • .Value = 60 は値が「60」
    • .Operator = 7 は演算子が「以上」[xlGreaterEqual]

    30-34行目:5番目のアイコンの条件設定

    • .Type = xlConditionValuePercent は種類が「パーセント」
    • .Value = 80 は値が「80」
    • .Operator = 7 は演算子が「以上」[xlGreaterEqual]

    特に説明は不要でしょう!?w

    ■最後に

    ・注意点

    – 演算子

    Excelの画面で設定を行う場合、演算子は選択式ですので、選べるものが決まっています

    ただし、マクロで記載する場合は、[Operatorプロパティ]に設定する値のみなので、間違う危険性が含まれていますので、十分に注意してください!

    ちなみに、下の右の絵のように間違うと実行時エラーが出ますw

    演算子は選択式
    演算子
    実行時エラー

    ・次回は

    条件付き書式の中で、一番と言っても過言ではない使い方として、

    「行全体の塗りつぶし」というのをよく見かけます!

    一覧のどこかの列が、特定条件を満たしていた場合に、その行を色付けするという処理ですね!

    これは実業務でもよく使っていましたので、「行全体」と「列全体」について、次回は記載していこうと思います!

    ではでは

  • カラースケール

    カラースケール

    条件付き書式の第四弾!カラースケールについて調べていきます

    サンプルソースの詳細な説明は、第一弾の以下の「指定の値より大きい」を参照してください

    ■種類

    まずはExcelのスタイルにある「条件付き書式」を開いてみます

    条件付き書式
    カラースケール
    条件付き書式

    簡単なものであれば、デフォルトで用意されている書式ルールを利用しても充分です

    今回は「カラースケール」について順に書式ルール毎に見ていきましょう

    ■カラースケール

    これはセルの値を2色や3色のグラデーションを使用して、色の濃淡でセルを強調表示させるためのルールです

    カラースケール

    一番下にある「その他のルール」を選択した場合は、以下のような新しい書式ルールの画面が表示されます

    その他のルール

    「セルの強調表示ルール」でも使用した以下のデータをサンプルにして、条件付き書式を施してみます

    条件付き書式-サンプルデータ
    サンプルデータ

    条件付き書式の対象範囲は、上図のサンプルデータの背景色が白い点数部分を対象として行います(範囲[Range]は「C4:K8」です)

    ・3色スケール

    3つの色を使用して、指定した中間値を基準に大、中、小の値に対してそれぞれ指定した書式を施します

    色のパターンを選択するだけで、中間値も自動で決まって、書式が施されますので便利ですね

    – 書式ルールを確認

    – マクロで記録してみる

    緑、黄、赤のカラースケールの設定をマクロを使って、保存した結果が以下のVBAソースです

    Sub Macro30()
    '
    ' Macro30 カラースケール(3色)
    '
    '
        Range("C4:K8").Select
        Selection.FormatConditions.AddColorScale ColorScaleType:=3
        Selection.FormatConditions(Selection.FormatConditions.count).SetFirstPriority
        Selection.FormatConditions(1).ColorScaleCriteria(1).Type = _
            xlConditionValueLowestValue
        With Selection.FormatConditions(1).ColorScaleCriteria(1).FormatColor
            .Color = 7039480
            .TintAndShade = 0
        End With
        Selection.FormatConditions(1).ColorScaleCriteria(2).Type = _
            xlConditionValuePercentile
        Selection.FormatConditions(1).ColorScaleCriteria(2).Value = 50
        With Selection.FormatConditions(1).ColorScaleCriteria(2).FormatColor
            .Color = 8711167
            .TintAndShade = 0
        End With
        Selection.FormatConditions(1).ColorScaleCriteria(3).Type = _
            xlConditionValueHighestValue
        With Selection.FormatConditions(1).ColorScaleCriteria(3).FormatColor
            .Color = 8109667
            .TintAndShade = 0
        End With
    End Sub

    – マクロの説明

    ・簡単に説明

    ※VBAソースの詳細な説明は、その1の「指定の値より大きい」を参照

    8行目:[AddColorScaleメソッド]で追加

    9行目:優先順位の設定

    10-11行目:[ColorScaleCriteriaコレクション]の1番目の種類を「最小値」に設定

    12-15行目:[ColorScaleCriteriaコレクション]の1番目の「色」を設定

    16-17行目:[ColorScaleCriteriaコレクション]の2番目の種類を「百分位」に設定

    18行目:[ColorScaleCriteriaコレクション]の2番目の値を「50」に設定

    19-22行目:[ColorScaleCriteriaコレクション]の2番目の「色」を設定

    23-24行目:[ColorScaleCriteriaコレクション]の3番目の種類を「最大値」に設定

    25-28行目:[ColorScaleCriteriaコレクション]の3番目の「色」を設定

    ・2色スケール

    2つの色を使用して、指定した値を基準に大、小の値に対してそれぞれ指定した書式を施します

    2色パターンを選択するだけで、書式が施されますので判り易いですね

    – 書式ルールを確認

    – マクロで記録してみる

    白、赤のカラースケールの設定をマクロを使って、保存した結果が以下のVBAソースです

    Sub Macro31()
    '
    ' Macro31 カラースケール(2色)
    '
    '
        Selection.FormatConditions.AddColorScale ColorScaleType:=2
        Selection.FormatConditions(Selection.FormatConditions.count).SetFirstPriority
        Selection.FormatConditions(1).ColorScaleCriteria(1).Type = _
            xlConditionValueLowestValue
        With Selection.FormatConditions(1).ColorScaleCriteria(1).FormatColor
            .Color = 7039480
            .TintAndShade = 0
        End With
        Selection.FormatConditions(1).ColorScaleCriteria(2).Type = _
            xlConditionValueHighestValue
        With Selection.FormatConditions(1).ColorScaleCriteria(2).FormatColor
            .Color = 16776444
            .TintAndShade = 0
        End With
    End Sub

    – マクロの説明

    ・簡単に説明

    ※VBAソースの詳細な説明は、その1の「指定の値より大きい」を参照

    3色と2色の違いがどこに出ているのかを見ていきます

    2色の場合は、[ColorScaleCriteriaコレクション]が2つしかありません

    そして、最小値と最大値の設定のみで、中央値は存在しません

    ■最後に

    ・「百分位」とは?

    選択された全データの値を百等分して順位(下から上に何番目)を指定するのが「百分位」という設定方法になり、値で指定した「50」は100個中の50個目(中央値)を意味します

    ※「100分の50(=50%)」とは意味が異なりますので、ご注意ください!

    サンプルのように45個しか値がなくても「百分位」で「50」は中央値を指定する値として設定することができます

    ・次回は

    アイコンセットを調べていきます!

    それが終わったら、条件付き書式を利用して、1行や1列を塗り潰す方法を簡単に紹介していこうと思います!

    ではでは

  • データバー

    データバー

    条件付き書式の第三弾!データバーについて調べていきます

    サンプルソースの詳細な説明は、第一弾の以下の「指定の値より大きい」を参照してください

    [blogcard url=”https://zesys.net/excel/formatconditions/style-conditional-format-vol1/”]Excel 条件付き書式について ~その1:セルの強調表示ルール~[/blogcard]

    ■種類

    まずはExcelのスタイルにある「条件付き書式」を開いてみます

    条件付き書式
    データバー
    条件付き書式

    簡単なものであれば、デフォルトで用意されている書式ルールを利用しても充分です

    今回は「データバー」について順に書式ルール毎に見ていきましょう

    ■データバー

    これはセルの値をデータとしてバー表示させるためのルールです

    データバー

    一番下にある「その他のルール」を選択した場合は、以下のような新しい書式ルールの画面が表示されます

    その他のルール

    「セルの強調表示ルール」でも使用した以下のデータを(ちょっと書き換えてw)サンプルにして、条件付き書式を施してみます

    条件付き書式-サンプルデータ
    サンプルデータ

    条件付き書式の対象範囲は、上図のサンプルデータの背景色が白い点数部分を対象として行います(範囲[Range]は「C4:K8」です)

    ・塗りつぶし(グラデーション)

    指定した値と等しいセルに対して、指定した書式を施します

    色を選ぶだけですね!「セルの強調表示ルール」や「上位/下位ルール」のような小さいウィンドウはでませんし、書式ルールを確認してもそれほど変化はないようです

    – 書式ルールを確認

    – マクロで記録してみる

    青のデータバー(グラデーション)の設定をマクロを使って、保存した結果が以下のVBAソースです

    Sub Macro20()
    '
    ' Macro20 データバー(グラデーション)
    '
    
    '
        Range("C4:K8").Select
        Selection.FormatConditions.AddDatabar
        Selection.FormatConditions(Selection.FormatConditions.count).ShowValue = True
        Selection.FormatConditions(Selection.FormatConditions.count).SetFirstPriority
        With Selection.FormatConditions(1)
            .MinPoint.Modify newtype:=xlConditionValueAutomaticMin
            .MaxPoint.Modify newtype:=xlConditionValueAutomaticMax
        End With
        With Selection.FormatConditions(1).BarColor
            .Color = 13012579
            .TintAndShade = 0
        End With
        Selection.FormatConditions(1).BarFillType = xlDataBarFillGradient
        Selection.FormatConditions(1).Direction = xlContext
        Selection.FormatConditions(1).NegativeBarFormat.ColorType = xlDataBarColor
        Selection.FormatConditions(1).BarBorder.Type = xlDataBarBorderSolid
        Selection.FormatConditions(1).NegativeBarFormat.BorderColorType = _
            xlDataBarColor
        With Selection.FormatConditions(1).BarBorder.Color
            .Color = 13012579
            .TintAndShade = 0
        End With
        Selection.FormatConditions(1).AxisPosition = xlDataBarAxisAutomatic
        With Selection.FormatConditions(1).AxisColor
            .Color = 0
            .TintAndShade = 0
        End With
        With Selection.FormatConditions(1).NegativeBarFormat.Color
            .Color = 255
            .TintAndShade = 0
        End With
        With Selection.FormatConditions(1).NegativeBarFormat.BorderColor
            .Color = 255
            .TintAndShade = 0
        End With
    End Sub

    – マクロの説明

    ・簡単に説明

    ※VBAソースの詳細な説明は、その1の「指定の値より大きい」を参照

    8行目:[AddDatabarメソッド]で追加

    9行目:[ShowValueプロパティ] = True で「棒のみ表示」のチェックを[OFF]

    10行目:優先順位の設定

    11-14行目:最小値と最大値の評価方法を自動設定に[Modifyメソッド]で変更

    15-18行目:[BarColorプロパティ]でバーの外観の色を設定

    19行目:[BarFillTypeプロパティ]でバーの外観の塗りつぶしを「グラデーション」に設定

    20行目:[Directionプロパティ](Dirですね)棒の方向を「左から右」に設定

    21行目:[NegativeBarFormatのColorTypeプロパティ]で負の棒の塗りつぶしを「塗りつぶしの色」に設定

    22行目:[BarBorderのTypeプロパティ]でバーの外観の枠線を「実線」に設定

    23-24行目:[NegativeBarFormatのBorderColorTypeプロパティ]で負の棒の罫線の色を「枠線の色」に設定

    25-28行目:[BarBorderのColorプロパティ]でバーの外観の枠線の色を設定

    29行目:[AxisPositionプロパティ]で軸の設定を「自動」に設定

    30-33行目:[AxisColorプロパティ]で軸の色を設定

    34-37行目:[NegativeBarFormatのColorプロパティ]で負の棒の塗りつぶしの「色」を設定

    38-41行目:[NegativeBarFormat.BorderColorプロパティ]で負の棒の枠線の「色」を設定

    ・塗りつぶし(単色)

    指定した値と等しいセルに対して、指定した書式を施します

    こちらも色を選ぶだけですね!グラデーションと単色の違いだけのようです

    – 書式ルールを確認

    – マクロで記録してみる

    青のデータバー(単色)の設定をマクロを使って、保存した結果が以下のVBAソースです

    Sub Macro21()
    '
    ' Macro21 データバー(単色)
    '
    
    '
        Range("C4:K8").Select
        Selection.FormatConditions.AddDatabar
        Selection.FormatConditions(Selection.FormatConditions.count).ShowValue = True
        Selection.FormatConditions(Selection.FormatConditions.count).SetFirstPriority
        With Selection.FormatConditions(1)
            .MinPoint.Modify newtype:=xlConditionValueAutomaticMin
            .MaxPoint.Modify newtype:=xlConditionValueAutomaticMax
        End With
        With Selection.FormatConditions(1).BarColor
            .Color = 13012579
            .TintAndShade = 0
        End With
        Selection.FormatConditions(1).BarFillType = xlDataBarFillSolid
        Selection.FormatConditions(1).Direction = xlContext
        Selection.FormatConditions(1).NegativeBarFormat.ColorType = xlDataBarColor
        Selection.FormatConditions(1).BarBorder.Type = xlDataBarBorderNone
        Selection.FormatConditions(1).AxisPosition = xlDataBarAxisAutomatic
        With Selection.FormatConditions(1).AxisColor
            .Color = 0
            .TintAndShade = 0
        End With
        With Selection.FormatConditions(1).NegativeBarFormat.Color
            .Color = 255
            .TintAndShade = 0
        End With
    End Sub

    – マクロの説明

    ・簡単に説明

    ※VBAソースの詳細な説明は、その1の「指定の値より大きい」を参照

    グラデーションと単色の違いがどこに出ているのかを見ていきます

    19行目:[BarFillTypeプロパティ]でバーの外観の塗りつぶしを「単色」に設定

    22行目:[BarBorderのTypeプロパティ]でバーの外観の枠線を「なし」に設定

    以下は、グラデーションにはあったが単色ではなくなっている設定です

    • [NegativeBarFormatのBorderColorTypeプロパティ]で負の棒の罫線の設定
    • [BarBorderのColorプロパティ]でバーの外観の枠線の色の設定
    • [NegativeBarFormat.BorderColorプロパティ]で負の棒の枠線の色の設定

    ■最後に

    今回はデータバーについて調べましたが、カラースケールも一緒でも良かったかな?とも思いましたが、書式ルールに選択肢が多いので、その辺りを追加で調べてみても良さそうです!

    VBAソースでも列挙型が多数出てきているので、その辺りをまとめるのも必要な感じですね!

    次回、「カラースケール」を調べてみて、余裕がありそうなら、書式ルールの選択肢についても調べてみたいと思います

    ちなみにですが、色の設定については、第一弾の方で最後に説明していますので、そちらも確認してください

    [blogcard url=”https://zesys.net/excel/formatconditions/style-conditional-format-vol1/”]Excel 条件付き書式について ~その1:セルの強調表示ルール~[/blogcard]

    ではでは

  • 上位/下位ルール

    上位/下位ルール

    条件付き書式の第二弾!上位/下位ルールについて、調べていきます

    サンプルのVBAソースの詳細な説明は、第一弾の以下の「指定の値より大きい」を参照してください

    [blogcard url=”https://zesys.net/excel/formatconditions/style-conditional-format-vol1/”]Excel 条件付き書式について ~その1:セルの強調表示ルール~[/blogcard]

    ■種類

    まずはExcelのスタイルにある「条件付き書式」を開いてみます

    条件付き書式
    上位/下位ルール
    条件付き書式

    簡単なものであれば、デフォルトで用意されている書式ルールを利用しても充分です

    今回は「上位/下位ルール」について順に書式ルール毎に見ていきましょう

    ■上位/下位ルール

    これはセルの値が上位や下位に含まれる場合に、セルを強調表示させるためのルールです

    条件付き書式-上位/下位ルール
    上位/下位ルール

    一番下にある「その他のルール」を選択した場合は、以下のような新しい書式ルールの画面が表示されます

    その他のルール

    「セルの強調表示ルール」でも使用した以下のデータをサンプルにして、条件付き書式を施してみます

    条件付き書式-サンプルデータ
    サンプルデータ

    条件付き書式の対象範囲は、上図のサンプルデータの背景色が白い点数部分を対象として行います(範囲[Range]は「C4:K8」です)

    ・上位10項目

    上位10項目に入る値のセルに対して、指定した書式を施します

    条件付き書式-上位10項目

    「上位10項目」を選択して、値が「10」の結果が以下になります

    条件付き書式-上位10項目サンプル
    上位10項目サンプル

    – 書式ルールを確認

    条件付き書式-上位10項目の編集
    上位10項目の編集

    – マクロで記録してみる

    上位10項目の設定をマクロを使って、保存した結果が以下のVBAソースです

    「上位」と「10」と「項目」というのが新しい項目で含まれているはずです

    Sub Macro10()
    '
    ' Macro10 上位10項目
    '
    
    '
        Range("C4:K8").Select
        Selection.FormatConditions.AddTop10
        Selection.FormatConditions(Selection.FormatConditions.count).SetFirstPriority
        With Selection.FormatConditions(1)
            .TopBottom = xlTop10Top
            .Rank = 10
            .Percent = False
        End With
        With Selection.FormatConditions(1).Font
            .Color = -16383844
            .TintAndShade = 0
        End With
        With Selection.FormatConditions(1).Interior
            .PatternColorIndex = xlAutomatic
            .Color = 13551615
            .TintAndShade = 0
        End With
        Selection.FormatConditions(1).StopIfTrue = False
    End Sub

    – マクロの説明

    ・簡単に説明

    ※VBAソースの詳細な説明は、その1の「指定の値より大きい」を参照

    8行目:[AddTop10メソッド]で追加

    9行目:優先順位の設定

    10-14行目:条件の設定

    • .TopBottom = xlTop10Top は「上位」
    • .Rank = 10 は「10」
    • .Percent = False は「%ではない」

    15-18行目:フォント設定

    19-23行目:背景設定

    24行目:条件を満たす場合は停止するかどうか

    ・上位10%

    上位10%に入る値のセルに対して、指定した書式を施します

    条件付き書式-上位10%

    「上位10%」を選択して、値が「10」の結果が以下になります

    条件付き書式-上位10%サンプル
    上位10%サンプル

    – 書式ルールを確認

    条件付き書式-上位10%の編集
    上位10%の編集

    – マクロで記録してみる

    「上位10項目」が「上位10%」と単位が変わっています

    Sub Macro11()
    '
    ' Macro11 上位10%
    '
    
    '
        Range("C4:K8").Select
        Selection.FormatConditions.AddTop10
        Selection.FormatConditions(Selection.FormatConditions.count).SetFirstPriority
        With Selection.FormatConditions(1)
            .TopBottom = xlTop10Top
            .Rank = 10
            .Percent = True
        End With
        With Selection.FormatConditions(1).Font
            .Color = -16383844
            .TintAndShade = 0
        End With
        With Selection.FormatConditions(1).Interior
            .PatternColorIndex = xlAutomatic
            .Color = 13551615
            .TintAndShade = 0
        End With
        Selection.FormatConditions(1).StopIfTrue = False
    End Sub

    – マクロの説明

    ・異なるところだけを説明

    ※VBAソースの詳細な説明は、その1の「指定の値より大きい」を参照

    10-14行目:条件の設定

    • .TopBottom = xlTop10Top は「上位」
    • .Rank = 10 は「10」
    • .Percent = True は「%」

    ・下位10項目

    下位10項目に入る値のセルに対して、指定した書式を施します

    条件付き書式-下位10項目

    「下位10項目」を選択して、値が「10」の結果が以下になります

    条件付き書式-下位10項目サンプル
    下位10項目サンプル

    – 書式ルールを確認

    条件付き書式-下位10項目の編集
    下位10項目の編集

    – マクロで記録してみる

    「上位」が「下位」に変わっています

    サブMacro12()
    '
    ' Macro12 下位10項目
    '
    
    '
        Range( "C4:K8")。選択
        Selection.FormatConditions.AddTop10
        Selection.FormatConditions(Selection.FormatConditions.count).SetFirstPriority
        Selection.FormatConditions(1)を使用
            .TopBottom = xlTop10Bottom
            。ランク= 10
            .Percent = False
        で終わる
        Selection.FormatConditions(1).Fontを使用
            .Color = -16383844
            .TintAndShade = 0
        で終わる
        Selection.FormatConditions(1).Interiorを使用
            .PatternColorIndex = xlAutomatic
            .Color = 13551615
            .TintAndShade = 0
        で終わる
        Selection.FormatConditions(1).StopIfTrue = False
    End Sub

    – マクロの説明

    ・異なるところだけを説明

    ※VBAソースの詳細な説明は、その1の「指定の値より大きい」を参照

    10-14行目:条件の設定

    • .TopBottom = xlTop10Bottom は「下位」
    • .Rank = 10 は「10」
    • .Percent = False は「%ではない」

    ※8行目のAddTop10メソッドは変わらないのです

    ・下位10%

    下位10%に入る値のセルに対して、指定した書式を施します

    条件付き書式-下位10%

    「下位10%」を選択して、値が「10」の結果が以下になります

    条件付き書式-下位10%サンプル
    下位10%サンプル

    – 書式ルールを確認

    条件付き書式-下位10%の編集
    下位10%の編集

    – マクロで記録してみる

    「下位10項目」が「下位10%」と単位が変わっています

    Sub Macro13()
    '
    ' Macro13 下位10%
    '
    
    '
        Range("C4:K8").Select
        Selection.FormatConditions.AddTop10
        Selection.FormatConditions(Selection.FormatConditions.count).SetFirstPriority
        With Selection.FormatConditions(1)
            .TopBottom = xlTop10Bottom
            .Rank = 10
            .Percent = True
        End With
        With Selection.FormatConditions(1).Font
            .Color = -16383844
            .TintAndShade = 0
        End With
        With Selection.FormatConditions(1).Interior
            .PatternColorIndex = xlAutomatic
            .Color = 13551615
            .TintAndShade = 0
        End With
        Selection.FormatConditions(1).StopIfTrue = False
    End Sub

    – マクロの説明

    ・異なるところだけを説明

    ※VBAソースの詳細な説明は、その1の「指定の値より大きい」を参照

    10-14行目:条件の設定

    • .TopBottom = xlTop10Bottom は「下位」
    • .Rank = 10 は「10」
    • .Percent = True は「%」

    ・平均より上

    平均より上に入る値のセルに対して、指定した書式を施します

    条件付き書式-平均より上

    「平均より上」を選択して、値が「より上」の結果が以下になります

    条件付き書式-平均より上サンプル
    平均より上サンプル

    – 書式ルールを確認

    条件付き書式-平均より上の編集
    平均より上の編集

    – マクロで記録してみる

    「平均より」「上」という新しい項目が増えている

    Sub Macro14()
    '
    ' Macro14 平均より上
    '
    
    '
        Range("C4:K8").Select
        Selection.FormatConditions.AddAboveAverage
        Selection.FormatConditions(Selection.FormatConditions.count).SetFirstPriority
        Selection.FormatConditions(1).AboveBelow = xlAboveAverage
        With Selection.FormatConditions(1).Font
            .Color = -16383844
            .TintAndShade = 0
        End With
        With Selection.FormatConditions(1).Interior
            .PatternColorIndex = xlAutomatic
            .Color = 13551615
            .TintAndShade = 0
        End With
        Selection.FormatConditions(1).StopIfTrue = False
    End Sub

    – マクロの説明

    ・異なるところだけを説明

    ※VBAソースの詳細な説明は、その1の「指定の値より大きい」を参照

    8行目:AddAboveAverageメソッドを使って追加

    [AddTop10メソッド]ではなく、[AddAboveAverageメソッド]が使用されています

    つまりは、[AddAboveAverageメソッド]が「平均より上または下の値だけを書式設定」を意味しています

    10行目:条件の設定が1行になっている

    • AboveBelow = xlAboveAverage は「より上」

    ・平均より下

    平均より下に入る値のセルに対して、指定した書式を施します

    条件付き書式-平均より下

    「平均より下」を選択して、値が「より下」の結果が以下になります

    条件付き書式-平均より下サンプル
    平均より下サンプル

    – 書式ルールを確認

    条件付き書式-平均より下の編集
    平均より下の編集

    – マクロで記録してみる

    「平均より上」が「平均より下」に変わっている

    Sub Macro15()
    '
    ' Macro15 平均より下
    '
    
    '
        Range("C4:K8").Select
        Selection.FormatConditions.AddAboveAverage
        Selection.FormatConditions(Selection.FormatConditions.count).SetFirstPriority
        Selection.FormatConditions(1).AboveBelow = xlBelowAverage
        With Selection.FormatConditions(1).Font
            .Color = -16383844
            .TintAndShade = 0
        End With
        With Selection.FormatConditions(1).Interior
            .PatternColorIndex = xlAutomatic
            .Color = 13551615
            .TintAndShade = 0
        End With
        Selection.FormatConditions(1).StopIfTrue = False
    End Sub

    – マクロの説明

    ・異なるところだけを説明

    ※VBAソースの詳細な説明は、その1の「指定の値より大きい」を参照

    10行目:条件の設定が変わっている

    • AboveBelow = xlBelowAverage は「より下」

    ※8行目のAddAboveAverageメソッドは変わらない

    ■最後に

    今回は、「上位/下位ルール」のみで終わりにします

    次回は、「データバー」「カラースケール」を調べます

    ではでは

  • セルの強調表示ルール

    セルの強調表示ルール

    一覧表を色付けしたりして見易くする方法として、条件付き書式と言うのがあります

    これって、各シートのセルや範囲に対して複数の設定ができるのですが、どのように管理されているのだろうか・・

    ■種類

    まずはExcelのスタイルにある「条件付き書式」を開いてみます

    条件付き書式
    セルの強調表示ルール
    条件付き書式

    簡単なものであれば、デフォルトで用意されている書式ルールを利用しても充分です

    今回は「セルの強調表示ルール」について順に書式ルール毎に見ていきましょう

    ■セルの強調表示ルール

    これはセルの値に応じて、セルを強調表示させるためのルールです

    条件付き書式-セルの強調表示ルール
    セルの強調表示ルール

    一番下にある「その他のルール」を選択した場合は、以下のような新しい書式ルールの画面が表示されます

    その他のルール

    よくある試験の点数表のようなデータをサンプルにして、条件付き書式を施してみます

    条件付き書式-サンプルデータ
    サンプルデータ

    基本的な条件付き書式の対象範囲は、上図のサンプルデータの背景色が白い点数部分を対象として行います

    範囲 [Rangeオブジェクト] で言うところの「C4:K8」ですね

    ま、実施日と言う日付行を作っているのは、察してくださいw

    ・指定の値より大きい

    その名の通り、指定した値より大きいセルに対して、指定した書式を施します

    条件付き書式-指定の値より大きい

    点数の白背景部分を全部選択して、「指定の値より大きい」を選択すると、何故だか「84.5」と言う値が自動で入りました

    この値は謎ですが、そのまま採用した結果が以下になります

    条件付き書式-指定の値より大きいサンプル
    指定の値より大きいサンプル

    – 書式ルールを確認

    これがどの様な書式ルールになっているのかを確認するため、「ルールの管理」から「ルールの編集」を開きます

    条件付き書式-指定の値より大きいの編集
    指定の値より大きいの編集

    – マクロで記録してみる

    セルの選択から「指定の値より大きい」を選択して、設定するところまでを「マクロの記録」で記録してみました

    すると、こんな感じにVBAソースが出力されました

    Sub Macro1()
    '
    ' Macro1 指定の値より大きい
    '
    
    '
        Range("C4:K8").Select
        Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlGreater, _
            formula1:="=84.5"
        Selection.FormatConditions(Selection.FormatConditions.count).SetFirstPriority
        With Selection.FormatConditions(1).Font
            .Color = -16383844
            .TintAndShade = 0
        End With
        With Selection.FormatConditions(1).Interior
            .PatternColorIndex = xlAutomatic
            .Color = 13551615
            .TintAndShade = 0
        End With
        Selection.FormatConditions(1).StopIfTrue = False
    End Sub

    – マクロの説明

    ・簡単に説明!

    7行目:セルの選択

    8-9行目:条件付き書式の追加

    10行目:優先順位の設定

    11-14行目:フォントの設定

    15-19行目:背景の設定

    20行目:条件を満たす場合は停止するかどうか

    ・もう少し詳しく!

    ①ここで重要なのは、8-9行目の条件付き書式の追加で使用される

    [FormatConditionsコレクション] の [Addメソッド] です

    「書式ルールを確認」と見比べてください!

    ルールの種類は「指定の値を含むセルだけを書式設定」が選択されていました

    [Addメソッド] がこの「指定の値を含むセルだけを書式設定」を意味しています

    ※つまり、他のルールの種類の場合は、 [Addメソッド] とは異なります!

    ②次に、その[Addメソッド]のパラメータを見ていきます

    これが「書式ルールを確認」の「次のセルのみを書式設定」の部分と一致します

    • Type:=xlCellValue は「セルの値」
    • Operator:=xlGreater は「次の値より大きい」
    • formula1:=”=84.5″ は「値」が等しい(=)

    『「セルの値」が「84.5と等しい値」「より大きい」』という意味になりますが、「等しい+より大きい」は「以上(>=)」ではないので注意してください

    あくまでも「等しい値+より大きい(>)」です!

    ③残りの書式ルールはフォントと背景なのですが・・その前に1行あります

    10行目の優先順位の設定です

    解り難い一行かも知れませんが、この一行の肝は、 [SetFirstPriorityメソッド]ではなく、実は [FormatConditions.countプロパティ] です!

    Addした書式ルールは、 [FormatConditionsコレクション] の一番最後(インデックス番号が 「FormatConditions.count」 と一致するアイテム)に追加されます

    その書式ルールを[SetFirstPriorityメソッド]で先頭(最優先=1)にしています

    そのため、この後に出てくるフォントと背景の設定は、 [FormatConditionsコレクション] の1番目(「FormatConditions(1)」 )のアイテムに対して実施されます

    ④では、フォントの設定です(「FormatConditions(1)」 の意味は、上記で理解頂いたと思いますので、もう触れませんw)

    フォント名やサイズは変えず、色 [Colorプロパティ] だけ変えていますが、 [TintAndShadeプロパティ] が設定されています

    これは、明度(-1:暗い~1:明るい、0は標準)で、Single型の単精度浮動小数点の値が設定可能です

    肝心の文字色を表す [Colorプロパティ] ですが、「-16383844」とは何でしょうか?

    これはフォント色のカラーコードを10進数で表現した値になります

    ※詳細は説明は、このページの最後に書いています

    ⑤残りの書式は、背景の設定です

    「.PatternColorIndex = xlAutomatic」 は塗り潰しパターン色を自動に設定するの意味です

    セルの書式設定の画面で言う右上の「パターンの色」が「自動」となっているこの部分です

    ⑥最後の1行、条件を満たす場合は停止するかどうかについては、書式ルールの画面ではなく、ルールの管理画面にある「条件を満たす場合は停止」の部分の設定になります

    デフォルトでは「False」(つまり、チェックしない)です

    かなり詳しく説明してしまいました・・w

    他の書式ルールも同じ粒度で書いてたら、恐ろしいことになるので、以下では差異のある変更点等にのみ着目して説明していきます

    ・指定の値より小さい

    その名の通り、指定した値より小さいセルに対して、指定した書式を施します

    条件付き書式-指定の値より小さい

    こちらも「指定の値より小さい」を選択して、値を「84.5」とした結果が以下になります

    条件付き書式-指定の値より小さいサンプル
    指定の値より小さいサンプル

    – 書式ルールを確認

    条件付き書式-指定の値より小さいの編集
    指定の値より小さいの編集

    – マクロで記録してみる

    さて、「指定の値より大きい」と「指定の値より小さい」とのマクロの違いは何でしょうか?

    当然!「大きい」と「小さい」の差だけですねー

    Sub Macro2()
    '
    ' Macro2 指定の値より小さい
    '
    '
        Range("C4:K8").Select
        Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlLess, _
            formula1:="=84.5"
        Selection.FormatConditions(Selection.FormatConditions.count).SetFirstPriority
        With Selection.FormatConditions(1).Font
            .Color = -16383844
            .TintAndShade = 0
        End With
        With Selection.FormatConditions(1).Interior
            .PatternColorIndex = xlAutomatic
            .Color = 13551615
            .TintAndShade = 0
        End With
        Selection.FormatConditions(1).StopIfTrue = False
    End Sub

    – マクロの説明

    ・異なるところだけを説明

    ※VBAソースの詳細な説明は、「指定の値より大きい」の説明を見てくださいw

    8-9行目:条件付き書式の追加

    • Type:=xlCellValue は「セルの値」
    • Operator:=xlLess は「次の値より小さい」
    • formula1:=”=84.5″ は「値」が等しい(=)

    ・指定の範囲内

    これは、2つの値の範囲に含まれる場合に、指定した書式を施します

    条件付き書式-指定の範囲内

    こちらも「指定の値より小さい」を選択して、値を「84.5」とした結果が以下になります

    条件付き書式-指定の範囲内サンプル
    指定の範囲内サンプル

    – 書式ルールを確認

    条件付き書式-指定の範囲内の編集
    指定の範囲内の編集

    – マクロで記録してみる

    選択範囲と書式は変えていませんので、「指定の範囲内」では、以下が異なります

    Sub Macro3()
    '
    ' Macro3 指定の範囲内
    '
    
    '
        Range("C4:K8").Select
        Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlBetween, _
            formula1:="=79", formula2:="=90"
        Selection.FormatConditions(Selection.FormatConditions.count).SetFirstPriority
        With Selection.FormatConditions(1).Font
            .Color = -16383844
            .TintAndShade = 0
        End With
        With Selection.FormatConditions(1).Interior
            .PatternColorIndex = xlAutomatic
            .Color = 13551615
            .TintAndShade = 0
        End With
        Selection.FormatConditions(1).StopIfTrue = False
    End Sub

    – マクロの説明

    ・異なるところだけを説明

    ※VBAソースの詳細な説明は、「指定の値より大きい」の説明を見てくださいw

    8-9行目にあたる部分です

    • Type:=xlCellValue は「セルの値」
    • Operator:=xlBetween は「次の値の間」
    • formula1:=”=79″ は最小「値」が等しい(=)
    • formula2:=”=90″ は最大「値」が等しい(=)

    ・指定の値に等しい

    その名の通り、指定した値と等しいセルに対して、指定した書式を施します

    条件付き書式-指定の値に等しい

    こちらも「指定の値に等しい」を選択した場合に、値が「84.5」と自動入力されましたが、等しいのがなかったので、「82」に変更した結果が以下になります

    条件付き書式-指定の値に等しいサンプル
    指定の値に等しいサンプル

    – 書式ルールを確認

    条件付き書式-指定の値に等しいの編集
    指定の値に等しいの編集

    – マクロで記録してみる

    「指定の値に等しい」は「大きい」や「小さい」と同じように値は1つですね

    Sub Macro4()
    '
    ' Macro4 指定の値に等しい
    '
    
    '
        Range("C4:K8").Select
        Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, _
            formula1:="=82"
        Selection.FormatConditions(Selection.FormatConditions.count).SetFirstPriority
        With Selection.FormatConditions(1).Font
            .Color = -16383844
            .TintAndShade = 0
        End With
        With Selection.FormatConditions(1).Interior
            .PatternColorIndex = xlAutomatic
            .Color = 13551615
            .TintAndShade = 0
        End With
        Selection.FormatConditions(1).StopIfTrue = False
    End Sub

    – マクロの説明

    ・異なるところだけを説明

    ※VBAソースの詳細な説明は、「指定の値より大きい」の説明を見てくださいw

    8-9行目にあたる部分です

    • Type:=xlCellValue は「セルの値」
    • Operator:=xlEqual は「次の値に等しい」
    • formula1:=”=82″ は「値」が等しい(=)

    ・文字列

    これは、指定の文字列を含むセルに対して、指定した書式を施します

    条件付き書式-文字列

    テスト結果は数字だけでしたので、選択を範囲を広げて、文字列に「試験」を設定した結果が以下になります

    条件付き書式-文字列サンプル
    文字列サンプル

    – 書式ルールを確認

    条件付き書式-文字列の編集
    文字列の編集

    – マクロで記録してみる

    選択範囲を変えてますけど、そこはそっとしておいてーw

    Sub Macro5()
    '
    ' Macro5 文字列
    '
    
    '
        Range("B2:M10").Select
        Selection.FormatConditions.Add Type:=xlTextString, String:="試験", _
            TextOperator:=xlContains
        Selection.FormatConditions(Selection.FormatConditions.count).SetFirstPriority
        With Selection.FormatConditions(1).Font
            .Color = -16383844
            .TintAndShade = 0
        End With
        With Selection.FormatConditions(1).Interior
            .PatternColorIndex = xlAutomatic
            .Color = 13551615
            .TintAndShade = 0
        End With
        Selection.FormatConditions(1).StopIfTrue = False
    End Sub

    – マクロの説明

    ・異なるところだけを説明

    ※VBAソースの詳細な説明は、「指定の値より大きい」の説明を見てくださいw

    「文字列」は特殊なようで、[Addメソッド]のパラメータが文字列ように変更されています

    • Type:=xlTextString は「特定の文字列」
    • String:=”試験” は文字列の「値」
    • TextOperator:=xlContains は「次の値を含む」

    ・日付

    その名の通りと言いたいところですが、実際には指定した日付の期間内のセルに対して、指定した書式を施します

    条件付き書式-日付

    「日付」を選択した場合、期間が選択できるようになり、この期間で「先月」を選択した結果が以下になります

    条件付き書式-日付サンプル
    日付サンプル

    – 書式ルールを確認

    条件付き書式-日付の編集
    日付の編集

    – マクロで記録してみる

    予定通りの日付までを範囲に含めて条件付き書式を設定しています

    Sub Macro6()
    '
    ' Macro6 日付
    '
    
    '
        Range("B2:M10").Select
        Selection.FormatConditions.Add Type:=xlTimePeriod, DateOperator:=xlLastMonth
        Selection.FormatConditions(Selection.FormatConditions.count).SetFirstPriority
        With Selection.FormatConditions(1).Font
            .Color = -16383844
            .TintAndShade = 0
        End With
        With Selection.FormatConditions(1).Interior
            .PatternColorIndex = xlAutomatic
            .Color = 13551615
            .TintAndShade = 0
        End With
        Selection.FormatConditions(1).StopIfTrue = False
    End Sub

    – マクロの説明

    ・異なるところだけを説明

    ※VBAソースの詳細な説明は、「指定の値より大きい」の説明を見てくださいw

    [Addメソッド]のパラメータが日付用に変わっています

    • Type:=xlTimePeriod は「日付」
    • DateOperator:=xlLastMonth は「先月」

    ・重複する値

    その名の通り、指定した範囲で重複する値のセルに対して、指定した書式を施します

    条件付き書式-重複する値

    「重複する値」を選択した場合、次の値を選択できるようになり、ここで「重複」を選択した結果が以下になります

    条件付き書式-重複する値サンプル
    重複する値サンプル

    – 書式ルールを確認

    条件付き書式-重複する値の編集
    重複する値の編集

    – マクロで記録してみる

    「重複する値」は値を入力ではなく、日付のように選択があるだけです

    Sub Macro7()
    '
    ' Macro7 重複する値
    '
    
    '
        Range("C4:K8").Select
        Selection.FormatConditions.AddUniqueValues
        Selection.FormatConditions(Selection.FormatConditions.count).SetFirstPriority
        Selection.FormatConditions(1).DupeUnique = xlDuplicate
        With Selection.FormatConditions(1).Font
            .Color = -16383844
            .TintAndShade = 0
        End With
        With Selection.FormatConditions(1).Interior
            .PatternColorIndex = xlAutomatic
            .Color = 13551615
            .TintAndShade = 0
        End With
        Selection.FormatConditions(1).StopIfTrue = False
    End Sub

    – マクロの説明

    ・異なるところだけを説明

    ※VBAソースの詳細な説明は、「指定の値より大きい」の説明を見てくださいw

    かなり特殊なようです

    [Addメソッド]ではなく、[AddUniqueValuesメソッド]が使用されています

    つまりは、[AddUniqueValuesメソッド]が「一意の値または重複する値だけを書式設定」を意味しています

    フォントや背景の設定の前に、[DupeUniqueプロパティ]の設定が追加されています

    • DupeUnique = xlDuplicate は「重複」

    ■最後に

    一つずつ違いを見ていくと、かなり時間がかかってしまいました

    今回は、「セルの強調表示ルール」のみで終わりにします

    次回は、「上位/下位ルール」を調べます

    ・色の話

    この話をココで詳しく話すよりは、どこかのサイトを見てもらった方がいいのですが・・w

    色と言うのは、16進数の6桁(つまり6桁*4bit=)24ビットカラー(フルカラー)で表現されるので、「0x000000 (0)」~「0xFFFFFF (‭16,777,215‬)」の合計:16,777,216 (「0x1000000」)色あるのです!

    ※16進数の「F」は、10進数では「15」、2進数では「1111」(4bit)

    条件付き書式のフォント設定で出てきた「-16383844」(10進数)について説明します!

    これはフォントの色の設定を見て頂くと出てきますが、Hexに記載されている16進数の「#9C0006」をちょっといじって10進数で表した値ですw

    このHexの「#9C0006」はRGB(赤=156、緑=0、青=6)のカラーコード表現になるので、16進数では赤が「0x9C」、緑が「0x00」、青が「0x06」となります

    これをつなげたのが、「9C0006」(16進数)です

    では、フォント設定のVBAソースを以下のようにして、[Colorプロパティ]の値を出力してみます

        With Selection.FormatConditions(1).Font
            .Color = -16383844
            Debug.Print .Color        ' ①「 393372 」と出力
            Debug.Print Hex(.Color)   ' ②「6009C」と出力
            .TintAndShade = 0
        End With
    

    [Colorプロパティ]に「-16383844」を設定しているのに、それを出力すると、「393372」と出力されました!

    少し上で書いた「合計:16,777,216 (「0x1000000」)色」を思い出してください

    『(色の合計数) – [Colorプロパティ] = (①のDebug.Printの出力)』となります

    そしてもう一つの②「6009C」と出力されたのは何か?

    これは、[Hexメソッド]で[Colorプロパティ]を16進数に変換しました

    6桁で表現すると「06009C」となります

    カラーコードの「9C0006」とは、赤と青の値が逆転しています

    この差が、10進数とRGBの差です(10進数と16進数の差ではない)

    VBAソースコードで[Colorプロパティ]を設定する際は、以下のように[RGBメソッド]を使用して、赤、緑、青を10進数で設定する方法をお勧めします!

        With Selection.FormatConditions(1).Font
            .Color = RGB(Red:=156, Green:=0, Blue:=6)   ' -16383844
            .TintAndShade = 0
        End With
    

    説明は下手なので、理解して頂けたか、実に心配ですがwww

    ま、そんな感じです!

    ではでは