1/18/2024

Excel。オートフィルターの抽出に対応したデータが最大値のとき行全体を塗りつぶすには【Fill】

Excel。オートフィルターの抽出に対応したデータが最大値のとき行全体を塗りつぶすには

<条件付き書式+AGGREGATE関数>

条件付き書式をつかって、データが最大値のとき、データ全体(行全体)を塗りつぶしたい場合には、MAX関数をつかうことで、対応することができます。

条件付き書式+AGGREGATE関数

条件付き書式の条件を確認してみましょう。


書式ルールのダイアログボックスには、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」と列固定の複合参照にすることで、行全体を対象にして塗りつぶすことができます。