5/07/2019

Excel。行を非表示にしても1からの連番にしたい。【Serial number】

Excel。行を非表示にしても1からの連番にしたい。

<AGGREGATE関数・SUBTOTAL関数>

次のような表があります。 

まずは、確認から、オートフィルターを使って得点が60点以上のみを表示してみます。
オートフィルターの「数値のフィルター」の「指定の値以上」をクリックします。

オートフィルターオプションダイアログボックスが表示されます。

60と入力してOKボタンをクリックします。
該当行以外は非表示になった表となりました。

さて、今回の本題はここから。
A列のNOですが、該当しない行が、非表示になってしまったので、当然連番になっていないわけですね。

これを抽出されたデータだけ、常に連番にしたい場合どうしたらいいのでしょうか?

【非表示に対応するには、AGGREGATE関数】

行だから、ROW関数なのかと思い浮かぶかもしれませんが、今回はROW関数では解決できません。
見えている件数だけを数えればいいわけです。

そこで、非表示を除いて数えてくれるようなものを考えてみると、AGGREGATE関数が使えそうな気がします。

A2をクリックして、手入力で数式を作っていきます。

AGGREGATE関数は、ダイアログボックスを表示して作ると逆にわかりにくいので、手入力で作っていきます。

AGGREGATE関数を選択すると、集計方法の種類を選択しましょう。

集計方法は、空白以外を数えたいので、COUNTA関数の3を選択して、「,(カンマ)」を入力します。
続いて、オプションを選択します。

今回は、非表示の行を無視したい、また仮にエラー値が出ても通し番号を設定したいわけなので、7番を選択します。

配列ですが、表示されている件数を数えたいので、次のように入力します。

$C$2:C2
最後は、”)”で閉じて確定させます。
A2の数式は、
=AGGREGATE(3,7,$C$2:C2)
となっています。
この数式をオートフィルで数式をコピーしておきましょう。

1からの連番でNOが表示されていますね。

さて、「$C$2:C2」という配列(範囲)は、累計を算出するときなどに使用する「始点のみを絶対参照」にする方法です。

この計算式をオートフィルでコピーすると範囲の始点で、C2は常に固定されていて、終点だけをスライドさせて範囲を拡張させることができます。

【オートフィルターで抽出してみよう】

先程と同様に、得点が60点以上だけをオートフィルターを使って抽出してみましょう。

このように、非表示になった行があっても、きちんと、NOは1番から連番で表示されていますね。
AGGREGATE関数でなくても、
A2の数式を、
=SUBTOTAL(103,$C$2:C2)
としても、同じように通し番号を表示することができます。

AGGREGATE関数・SUBTOTAL関数ともに、覚えておくといい関数の一つですね。