残業を減らす!Officeテクニック
Excelで巨大な表に連番を振る効率的な方法! 空白を飛ばして連番を生成するワザも
2023年1月30日 06:55
連番を作成する方法はいくつかあります。フィルハンドルをドラッグするのが定番。隣の列に既存のデータが入力されていれば、フィルハンドルをダブルクリックするのが手っ取り早いでしょう。
関数を利用する方法もあります。代表格は、ROW関数です。「=ROW()」と入力することで、数式の入力されている行の行番号を取得できます。見出しがある時はその行数の分を引いて、以下のように「=ROW()-1」となります。
ROW関数を使って行番号を振った場合、行の追加・削除があっても、連番を保持できるメリットがあります。この動作はご存じの方が多いでしょう。ただ、数式のコピーは必要です。
同様に連番を保持できる「SEQUENCE関数」もあります。スピルに対応しているため、数式をコピーする必要もなく、大量の連番を一気に振りたいときに便利です。
構文は上記の通りですが、すべての引数が省略可能です。省略した引数は「1」と見なされるため、例えば、1,500行分の連番を振るなら「=SEQUENCE(1500)」と、ひとつ数式を入力するだけです。しかし、表の行数がわからないと過不足が生じます。
最終行番号を取得できれば、SEQUENCE関数の弱点は回避できますよね。今回は、関数を使って表の最終行番号を取得し、最終行までの連番を生成する方法、また、空白を飛ばして連番を振る方法を紹介します。
未入力のデータがない表の行数を調べる
表の最終行を調べる場合、特定の列に必ずデータが入力されているかどうかがポイントになります。未入力のセルがないなら、その列のデータの数を数えるだけです。まずは、COUNTA関数でデータの数を数えてみましょう。
最終行がわかれば、SEQUENCE関数と組み合わせるだけです。見出し行分を引いて引数に指定します。
未入力のデータが含まれる表の行数を調べる
COUNTA関数で数えられるのは、データの入力されているセルの数です。もし、B列に未入力のセルがある場合は、連番が足りなくなってしまいます。試しに任意のセルのデータを消去してみましょう。
空白のセルの問題を回避するには、数値の最大値を求めるMAX関数とROW関数を使います。「空白ではないセルの最大行」を求めると考えます。入力する数式は「=MAX((B:B<>"")*ROW(B:B))」です。
B列に空白が含まれていても「1501」の結果が得られました。これをSEQUENCE関数と組み合わせればうまくいきそうですね。見出し行の分引いておくことを忘れずに。
任意の行を飛ばして連番を振る
保留扱いの行や補足を追加した行など、任意の行を飛ばして連番振りたいことがありますよね。ROW関数やSEQUENCE関数ではなく、MAX関数を使います。以下は連番用の数式として「=MAX($A$1:A1)+1」と入力して、コピーした状態です。
「$A$1:A1」はセルA1からA1までの意味です。下方向へコピーすると、「$A$1:A2」「$A$1:A3」「$A$1:A4」と変化します。MAX関数の対象にするセル範囲が広がるわけです。MAX関数は数値の最大値を求めるので、見出し行の分として「+1」しています。
数値が入力されていなければ判定対象外なので、連番が表示された行の一部を消去すると、以下のように空白を飛ばした連番となります。
オートフィルで数式をコピーしておくこと、空白にしたセルに再び連番を振る時は数式のコピーが必要といった手間はかかりますが、わかりやすい方法だと思います。定番のROW関数の連番の代わりに使ってもいいですね。