上位/下位ルール
条件付き書式の第二弾!上位/下位ルールについて、調べていきます
サンプルのVBAソースの詳細な説明は、第一弾の以下の「指定の値より大きい」を参照してください
[blogcard url=”https://zesys.net/excel/formatconditions/style-conditional-format-vol1/”]Excel 条件付き書式について ~その1:セルの強調表示ルール~[/blogcard]
■種類
まずはExcelのスタイルにある「条件付き書式」を開いてみます


簡単なものであれば、デフォルトで用意されている書式ルールを利用しても充分です
今回は「上位/下位ルール」について順に書式ルール毎に見ていきましょう
■上位/下位ルール
これはセルの値が上位や下位に含まれる場合に、セルを強調表示させるためのルールです

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

「セルの強調表示ルール」でも使用した以下のデータをサンプルにして、条件付き書式を施してみます
条件付き書式の対象範囲は、上図のサンプルデータの背景色が白い点数部分を対象として行います(範囲[Range]は「C4:K8」です)
・上位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%」と単位が変わっています
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」の結果が以下になります
– 書式ルールを確認

– マクロで記録してみる
「上位」が「下位」に変わっています
サブ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%」と単位が変わっています
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メソッドは変わらない
■最後に
今回は、「上位/下位ルール」のみで終わりにします
次回は、「データバー」「カラースケール」を調べます
ではでは






