抽出結果に順位をつける(後半)

2013Excel関数技BEST 51回後半

IF関数とSUBTOTAL関数 抽出後も、結果に順位をつける

RANK関数で順位をつけた表がありますが、その表にフィルタで抽出をかけると、順位が崩れてしまいます。フィルタで抽出しても常に表示された結果に順位がつくようにするにはどうしたらよいでしょう。
今回は、IF関数SUBTOTAL関数の式を作業列に作成し、その値も元にRANK関数で順位をつけることにします。 解説の後半です。

フィルタで抽出しても、結果に順位がつくようにしたい

今度は、順位のセルに入力する式を変更します。 C2セルにもともと入っていた式=RANK.EQ(C2,$C$2:$C$13,0)はひとまず削除します。
C2セルを選択し、関数の挿入ボタン、あるいは数式タブの論理からIFを選択します。
論理式には、前頁で式を入力したE2セルを選択します。
フィルタで抽出後も結果に順位
真の場合には、RANK関数で順位をつける式を入れます。
Excel2010からRANK関数は、RANK.EQとRANK.AVGになりましたが、RANK関数自体は、互換関数として使えます。 RANK.EQ(C2,$C$2:$C$13,0)
RANK(C2,$C$2:$C$13,0)
フィルタで抽出後も結果に順位2
数式を下までコピーしてください。
抽出したい「アジアンスタイル」で抽出をかけると、
フィルタで抽出後も結果に順位3
抽出されたデータに順序がつけられました。
フィルタで抽出後も結果に順位4

SUBTOTAL関数は、抽出されないデータを無視する

SUBTOTAL関数は、抽出されないデータを無視するので、結果的に表示されているデータのランクが表示されるようになります。
E2セルに入力された式をみてみましょう。
フィルタで抽出後も結果に順位5
つまりE列には、抽出された場合は、C2の売上が表示されますが、抽出されなければ、見えませんが、空白となるのです。
D2セルに入力された式
=IF(E2,RANK(E2,$E$2:$E$13,0),"")
こちらは、IF関数の論理式にE2セルを設定しているので、抽出されていれば、C2の売上が入っています。
抽出されなければ””で空白ですから、エラー値が返されます。
フィルタで抽出後も結果に順位6
エラー値#VALUE!が返されてもリストにないので、見えませんし、集計から除外されるので、問題がないわけです。
見えないところでもエラー値がいやだというのでしたら、=IF(SUBTOTAL(2,C2),C2,0)と、E2セルに式を入力する時に、IF関数の偽の場合には””としないで0を入力しておきます。
この場合は、E列には、抽出された場合は、C2の売上が表示されますが、抽出されなければ、見えませんが、0となるのです。
今日の講義は以上です。お疲れ様でした。