Excelの表で「1, 2, 3...」と連番を入力した際、行の削除や非表示のフィルター操作によって番号がずれてしまうことがあります。
このような問題は、ROW関数やSUBTOTAL関数を使うことで、データの変更に応じて自動で正しい連番を再計算する仕組みに改善できます。
この記事では、行の削除やフィルターに対応する自動連番の設定手順や、空欄をスキップして番号を振る応用方法を解説します。
記事のポイント
- 通常のドラッグ入力で作った連番は行削除で壊れてしまう
- ROW関数を使えば行を削除しても常に正しい連番を保てる
- SUBTOTAL関数を使えばフィルターで隠れた行を無視して番号を振れる
- IF関数と組み合わせればデータがある行だけに連番を表示できる
- メンテナンスの手間が省け、データ処理の正確性が向上する
Excelの連番が壊れる問題とROW関数を使った自動連番の基本手順

エクセルの基本操作である「オートフィル(右下をドラッグして連番を作る機能)」は便利ですが、表の修正が発生した途端に脆さを露呈します。
まずは最も基本となる、行の追加・削除に強い自動連番の作り方を見ていきましょう。
昔、200行ほどある取引先リストから行を削った際、手動の連番が虫食いになっているのに気づかず印刷してしまいました。取引先から『番号が飛んでいるけれど、データ漏れ?』と指摘されて大慌てしたことがあります。ROW関数やSUBTOTAL関数を使うようになってからは、こうしたミスが一切なくなりました。
連番をドラッグ(オートフィル)で作る従来の方法の限界
「1, 2」と入力して下へドラッグするオートフィルは、単なる「数字の入力」に過ぎません。
そのため、途中の「3」の行を削除すると、その下は「4」のままで連番が崩れてしまいます。表を修正するたびに番号を振り直すのは、時間の無駄ですしミスの原因にもなります。
ROW関数を使って行の削除に対応した自動連番を振る手順
そこでおすすめなのがROW(ロウ)関数です。ROW関数は「そのセルが何行目にあるか」を返す関数です。
たとえば、見出しが1行目にあり、データが2行目から始まる場合は、連番を入れたいセルに =ROW ()-1 と入力します。こうすることで、何行目を削除しても、エクセルが自動的に現在の行番号を取得して再計算してくれるため、連番が絶対に崩れません。
フィルターで非表示にした行を飛ばして連番を振るSUBTOTAL関数の手順

ROW関数は便利ですが、フィルター機能を使って特定の行を「非表示」にした場合には対応できません。
非表示になった行もカウントしてしまうため、画面上の番号が飛んでしまうのです。
なぜ非表示行を考慮する必要があるのか?通常関数の限界
データを特定の条件(たとえば「営業部だけ」「今月分だけ」など)で絞り込んだ際、表示されているデータだけで「1, 2, 3...」と綺麗な連番になっていてほしいことって多いですよね。
通常の関数では隠れた行を無視できないため、専用の関数を使う必要があります。
SUBTOTAL関数(関数番号3または103)を使った自動連番の設定手順
フィルターに対応するには、SUBTOTAL関数を使います。
連番を入れる最初のセル(例:A2)に、=SUBTOTAL (103, $B$2:B2) と入力します。(※B列は必ずデータが入っている列を指定してください)。
「103」という指定は、「非表示のセルを無視して、データが入っているセルの個数を数える」という特別な機能を持っています。これでフィルターをかけても常に綺麗な連番が維持されます。
データが入っている行だけに限定して自動連番を振る応用ワザ

さらにもう一段階レベルアップした、実務で非常に使える応用テクニックをご紹介します。
空欄の行をスキップして必要な箇所だけ連番を振るメリット
表の中に「備考用の空白行」などを設けている場合、そこにまで連番が振られてしまうと見た目が不格好ですよね。
データが入力されている行にだけ自動で番号を表示させることができれば、さらにスマートな表になります。
IF関数とCOUNTA関数(またはSUBTOTAL)を組み合わせる設定方法
これを実現するには、IF関数を組み合わせます。
たとえば =IF (B2="", "", ROW ()-1) のように記述すれば、「もし隣のセル(B2)が空欄なら連番も空欄にし、文字が入っていれば連番を振る」という賢い処理が可能になります。
【要注意】アップデートによる最新仕様の落とし穴とセキュリティ(WAF)検知エラーの回避ワザ

SUBTOTAL関数は非常に強力ですが、Excelのバージョンや共同編集時の環境によっては、フィルター解除時の再計算にタイムラグが生じることがあります。
大規模なデータを扱う場合は、動作が重くなることもあるため注意してください。最新の仕様については公式サイトも併せてご確認ください。
Excelの自動連番設定・行スキップに関するよくある質問(FAQ)
Q1:自動連番を設定したのに、並べ替え(ソート)を実行すると連番の順番が崩れてしまいます。対策は?
SUBTOTAL関数などを使った場合、ソートを行うと参照範囲がずれてしまうことがあります。ソートを多用する表の場合は、事前に連番の列をコピーし、「値として貼り付け」て数式をテキスト化しておくのが安全です。
Q2:非表示の行を再表示したときに、自動で連番が元通りに振り直されますか?
はい、SUBTOTAL関数(103指定)を使っていれば、非表示を解除した瞬間に自動で元の正しい連番に振り直されます。
Q3:自動連番の数式を値(テキスト)に固定して確定したい場合は?
連番の列を選択してコピー(Ctrl+C)し、そのまま右クリックの「形式を選択して貼り付け」から「値(123のアイコン)」を選んで貼り付けてください。
まとめ:自動連番を使いこなしてデータメンテナンスをスマートに
今回は、行の削除やフィルターに対応するExcelの自動連番設定について解説しました。
ROW関数やSUBTOTAL関数を一度設定しておくだけで、その後の表のメンテナンスにかかる時間が大幅に削減できます。
手作業による番号の修正を自動化し、正確で扱いやすい表作りに役立ててください。