Excel。オートフィルターの抽出に対応したデータが最大値のとき行全体を塗りつぶすには
<条件付き書式+AGGREGATE関数>
条件付き書式をつかって、データが最大値のとき、データ全体(行全体)を塗りつぶしたい場合には、MAX関数をつかうことで、対応することができます。
条件付き書式の条件を確認してみましょう。
書式ルールのダイアログボックスには、MAX関数をつかった条件が設定されています。
=MAX($F$2:$F$10)=$F2
これで、F列の合計が最大の場合、その行全体を塗りつぶすことができるわけです。
ところが、オートフィルターをつかって、抽出をすると対応してくれないことがわかります。
Readingを80以上の条件で抽出してみましょう。
最大値は259なので、その行が塗りつぶし対象になっているはずですが、対応していません。
原因は、先程の条件でMAX関数をつかったからです。
MAX関数は、データ抽出に伴う、行の非表示に対応しておりません。
要するに、可視データのみが対象になっているわけではありません。
そのため、MAX関数では対応することができないというわけです。
では、どのようにしたらいいのでしょうか。
非表示に対応することができるAGGREGATE関数をつかって条件を設定します。
オートフィルターの抽出条件をクリアして、条件式を修正します。
=AGGREGATE(4,5,$F$2:$F$6)=$F2
これで、オートフィルターの抽出にも対応することができます。
それでは、改めて、Readingが80以上の条件で抽出します。
このように、可視データのみが対象となって、合計の最大値259のデータが塗りつぶされていることがわかります。
オートフィルターと条件付き書式を組み合わせるならば、AGGREGATE関数をお勧めします。
条件式の説明をします。
=AGGREGATE(4,5,$F$2:$F$6)=$F2
AGGREGATE関数の最初の引数は、「集計方法」です。
集計方法の4番は、最大値です。
2つめの引数は、「オプション」。
5を採用したのは、「非表示の行を無視します」をつかうためです。
別に非表示を無視してくれる条件ならば、なんでもOKです。
3つ目の引数は、「配列」。範囲なので、F2:F6を絶対参照で設定します。
これで、非表示に対応した最大値を算出することができます。
この値と、F列のデータが合致しているならば、塗りつぶすというわけです。
なお、「=$F2」と列固定の複合参照にすることで、行全体を対象にして塗りつぶすことができます。