RANK関数で付けた「順位」を、フィルターで "グループ別に表示" すると「順位」の表示がバラバラになってしまいます
フィルターを掛けて、「グループ別に表示」すると「順位」がバラバラになる
RANK関数で "順位" を付けた表にフィルターをかけて絞り込むと、「順位」は "全体での順位" になるので「連続した順位」にはなりません。
「全体」での順位になるので、「商品別」の順位は不連続
「売上を基準に並べ替える」方法では、商品別(商品A)の順位は不連続になってしまいます。
「商品A」でフィルターをかけて絞り込む
「商品A」でフィルターをかけて絞り込むと、順位が不連続になってしまいます。
フィルターを掛けて表示しても「グループ別」の順位になるようにする
SUBTOTAL関数を使うと、「表」にフィルターをかけて絞り込んでも「順位が "連続" 」になります。
RANK関数で「順位」を付ける
"RANK関数" を使えば、"表" の「売上の項目」を基準にして「順位(RANK)」を付けることができます。
「商品名別の順位」が表示されるようにする
フィルター機能で「表示を絞り込んだ状態」にしても、順位が正しく表示されるようにするには "SUBTOTAL関数" を使います。
RANK関数はフィルター機能で「非表示」になっている部分の "順位" も対象になるので、SUBTOTAL関数を使って「非表示の部分はデータ無し」になる列を追加します。
追加した「表示された部分だけにデータがある」列をRANK関数で参照することでフィルター関数で絞り込んで表示した行だけの順位が表示されるようになります。
SUBTOTAL関数で、「表示されない行」を"データ無し"にする
SUBTOTAL関数を使って、フィルターで「抽出されないデータを無視する行」を追加します。
SUBTOTAL関数で「C3」のセルにデータがある(表示されている)場合は、IF関数で"真" として「C3」の値を表示し、データが無い(表示されない)場合は、"偽" として「 ""(空白行)」にします。
SUBTOTAL関数の「列」を使って、順位を付ける
IF関数で「SUBTOTAL関数の列」を参照し、「データがある」場合は "真" としてRANK関数で「順位」を表示し、「データが無い」場合は "偽" として「 "" (空白)」とすることでRANK関数の対象から除外します。
表示されている「データ」のみの順位が表示される
フィルター機能で「商品A」だけを表示すると、表示されない「行」はRANK関数の対象外となり「商品A」だけの順位が表示されるようになります。
「商品B」だけの順位
不要な列を「非表示」にする
SUBTOTAL関数の列を "非表示" にすることで見易くなります。
このように、SUBTOTAL関数を使って「表示されない『行』を『空白』にする」ことでフィルター関数で表示を "絞り込んだ" 場合にも順位が正しく表示されるようにすることができます。
※ SUBTOTAL関数の変数
SUBTOTAL関数の「集計方法」には、色々なものがあります。