【VBAリファレンス|実務向け】実務で差がつく!「途切れない」連番の自動生成テクニック

スポンサーリンク

皆さん、こんにちは。Excel講師の佐藤です。日々の業務で「リストの行を削除したら連番がズレてしまった」「新しく行を挿入するたびに連番を打ち直している」といった経験はありませんか?

今回は、単なる「オートフィル」や「1を足すだけの数式」を卒業し、実務で本当に使える「メンテナンスフリーな連番生成術」を伝授します。

SUBTOTAL関数で「フィルタ対応」の連番を作る

通常の「=A1+1」という数式は、行を削除するとエラー(#REF!)になったり、フィルタで特定のデータだけを表示した際に番号が飛んでしまったりするのが難点です。そこで活用したいのが SUBTOTAL関数 です。

数式:=SUBTOTAL(3, $B$2:B2)

この数式のポイントは、参照範囲の始点を「$」で固定し、終点を相対参照にしている点です。SUBTOTAL関数の第1引数に「3(COUNTA)」を指定することで、フィルタで非表示にした行は計算から除外され、常に表示されている行に対してのみ「1, 2, 3…」と番号が振られます。行の削除にも強く、非常に堅牢な数式です。

テーブル機能を活用する「最強の自動化」

数式をいちいちコピーして下に引っ張る作業すら面倒だという方には、Excelの「テーブル機能」がおすすめです。

1. 範囲を選択して [Ctrl] + [T] キーを押す。
2. 連番を入力したい列に「=ROW()-1」と入力する(※見出し行がある場合)。

テーブル機能を使う最大のメリットは、「新しい行を追加した瞬間に数式が自動コピーされる」ことです。数式をコピーし忘れて番号が止まってしまうというミスを物理的に防げます。実務においては、「手作業を極力排除する仕組み作り」がミスゼロへの近道です。

なぜ「ROW関数」を使うべきなのか

よくある「=A1+1」という書き方は、途中の行を削除した瞬間に参照先がズレてしまいます。一方で、=ROW()-1 のようなROW関数を使ったアプローチは、「自分が今、上から何行目にいるか」を直接取得します。そのため、行の挿入や削除を行っても、常にその行の絶対的な位置に基づいた番号が維持されます。

まとめ:実務での使い分け

・フィルタを多用するリストなら SUBTOTAL関数
・データの追加が頻繁な一覧表なら テーブル機能 × ROW関数

この2つを使い分けるだけで、毎日の「連番修正作業」から解放されます。ぜひ、明日からの業務で試してみてください。ツールに振り回されるのではなく、ツールを使いこなして、空いた時間でよりクリエイティブな仕事に取り組みましょう!

タイトルとURLをコピーしました