ROW関数を使えば行削除には対応できますが、現場にはもうひとつの大きな壁が存在します。それが「オートフィルターで特定の部署や商品だけを絞り込んだとき、連番が『3, 7, 12…』と飛び飛びになってしまう問題」です。画面上に表示されている行だけで「1, 2, 3…」と綺麗に並べ替えたい場合、決定打となるのがSUBTOTAL関数フィルター連番です。
SUBTOTAL関数は、第1引数に「計算方法の番号」、第2引数に「参照範囲」を指定します。ここで計算方法に「103」を指定するのが最大のポイントです。103は「非表示行を無視してCOUNTA(データの個数を数える)を行う」という特殊な命令コードです。
例えば、B列に「氏名」や「商品名」などのデータが入力されており、A列に連番を振りたい場合、A2セルに以下の数式を入力して下へコピーします。
=SUBTOTAL(103, $B$2:B2)
この数式の構造は、$B$2(始点)を絶対参照で固定し、末尾のB2を相対参照にすることで、数式を下へコピーするにつれて参照範囲が「$B$2:B3」「$B$2:B4」と広がっていきます。そしてフィルターで中間の行が非表示になった場合、SUBTOTAL関数は「現在画面に見えているセルの個数だけ」をカウントします。その結果、どんな条件でフィルターを絞り込んでも、画面上で常に1から始まる連続番号が瞬時に再構築される仕組みです。
実務の現場では、会議用の資料印刷やPDF出力の直前にフィルターをかけるケースが多いため、このSUBTOTAL関数をあらかじめ組み込んでおくことで、帳票の美しさと信頼性が格段に向上します。