エクセルで連番を入力したいとき、1・2・3・4…と手動で入力していくのは非常に手間がかかります。
オートフィル・数式・ROW関数・VBAなどを活用すれば、大量の連番を一瞬で自動生成することができます。
本記事では、エクセルで連番を一括生成する方法を作成・設定・自動化・数式・シーケンスの観点から解説していきます。
エクセルで連番を一括生成する最も手軽な方法
それではまず、エクセルで連番を素早く一括生成するための基本的な方法について解説していきます。
連番生成の方法は複数ありますが、用途に応じてオートフィル・数式・VBAを使い分けることがポイントです。
オートフィルを使った連番の自動生成
最も手軽な連番生成方法はオートフィルの活用です。
A1セルに「1」、A2セルに「2」を入力して両方のセルを選択し、右下のフィルハンドル(■)を下方向にドラッグすると連番が自動で入力されます。
「1」だけを入力してフィルハンドルをドラッグすると、Ctrlキーを押しながらドラッグすることで連番になります。
大量の連番が必要な場合は、フィルハンドルをダブルクリックすることで隣の列のデータがある行まで自動で連番が入力されます。
「連続データの作成」ダイアログを使った大量連番生成
非常に大きな範囲に連番を生成したい場合は「ホーム」タブ→「フィル」→「連続データの作成」が便利です。
種類を「加算」、増分値を「1」、停止値を最終番号に設定して実行すると指定した範囲に連番が一括生成されます。
行・列の方向や増分値(2飛びや5飛びなど)も指定できる柔軟な方法です。
10,000件以上の大量連番もこの方法なら瞬時に生成できます。
ROW関数を使った連番の自動生成
ROW関数を使うと、行番号を利用した連番が数式で生成できます。
=ROW(A1)
→ A1セルの行番号(1)を返します。下方向にコピーすると2、3、4…と連番になります。
=ROW(A1)-1
→ 2行目から数式を入力する場合に1から始まる連番を生成できます。
ROW関数を使った連番は行を削除・挿入しても自動で番号が更新されないため、番号の振り直しが不要な静的連番に向いています。
数式を使った動的な連番生成方法
続いては、数式を使って動的に連番を生成する方法を確認していきます。
行の追加・削除に連動して番号が自動更新される動的な連番は、リスト管理や番号管理に特に有効です。
COUNTA関数やSEQUENCE関数を活用することで自動更新される連番が実現できます。
COUNTA関数を使った動的連番
=COUNTA($B$1:B1)
→ B列のデータ数をカウントして連番を生成します。B列にデータが入力されている行のみに番号が付きます。
空白行をスキップして連番を振りたい場合に非常に有効な方法です。
データが追加されると自動で番号が更新されます。
SEQUENCE関数を使った連番生成(Excel 2019以降)
Excel 2019以降またはMicrosoft 365ではSEQUENCE関数が使えます。
=SEQUENCE(10)
→ 1から10までの連番を縦方向に自動生成します。
=SEQUENCE(5, 3)
→ 5行3列の連番を生成します。
=SEQUENCE(10, 1, 5, 2)
→ 5から始まり2刻みの連番を10個生成します(5、7、9、11…)。
SEQUENCE関数はスピル機能を使って自動的に隣接セルに結果を展開する非常に便利な関数です。
IF関数と組み合わせた条件付き連番生成
特定の条件を満たす行のみに連番を振りたい場合はIF関数との組み合わせが有効です。
=IF(B2=”完了”, COUNTA($B$2:B2), “”)
→ B列が「完了」の行だけに順番に番号を振ります。
条件付き連番は完了タスクや特定カテゴリの件数管理に役立ちます。
VBAを使った連番の一括自動生成
続いては、VBAを活用した連番の一括自動生成方法を確認していきます。
VBAを使うことで大量データへの高速処理やカスタマイズされた連番生成が実現できます。
定期的に連番を振り直す処理や複雑な条件の連番生成にはVBAが最適です。
大量連番を一括生成するVBAコード
Sub 連番一括生成()
Dim i As Long
Dim lastRow As Long
lastRow = 1000
For i = 1 To lastRow
Cells(i, 1).Value = i
Next i
MsgBox “連番の生成が完了しました”
End Sub
このコードはA列の1行目から1000行目まで連番を一括生成します。
lastRowの値を変更することで生成する連番の数を調整できます。
既存データに連番を自動付与するVBAコード
Sub データに連番付与()
Dim i As Long
Dim lastRow As Long
lastRow = Cells(Rows.Count, 2).End(xlUp).Row
For i = 1 To lastRow
If Cells(i, 2).Value <> “” Then
Cells(i, 1).Value = i
End If
Next i
End Sub
B列にデータがある行だけにA列で連番を振る処理です。
LastRowを動的に取得することで、データ量が変わっても対応できます。
既存の連番をリセット・振り直しするVBAコード
行の追加・削除後に連番を振り直す処理もVBAで自動化できます。
対象列の連番をいったんクリアしてから再度生成する処理をボタンに割り当てると、ワンクリックで連番が整理されます。
管理表の番号管理に非常に役立つ仕組みです。
まとめ
本記事では、エクセルで連番を一括生成する方法をオートフィル・数式・関数・VBAの観点から解説しました。
少量の連番にはオートフィルや連続データの作成が手軽で効果的です。
ROW関数・COUNTA関数・SEQUENCE関数を活用すると数式ベースの動的な連番管理が実現できます。
VBAを使えば大量データへの高速処理や条件付き連番の自動生成も実現できます。
連番生成の自動化を活用して、エクセルでのデータ管理をさらに効率化していきましょう。