- Excelで連番を自動入力したい!よくある悩みと解決策
- 方法1:オートフィルで連番を振る(最も基本的な方法)
- 方法2:ROW関数で行番号を利用して連番を自動化する
- 方法3:SEQUENCE関数で一括連番を作成する(Excel 365・2021対応)
- 方法4:COUNTA関数で空白を除外した連番を振る
- 方法5:SUBTOTAL関数でフィルター後も正しい連番を表示する
- 方法6:テーブル機能と構造化参照で連番を自動管理する
- 方法7:VBAマクロで連番を完全自動化する(上級者向け)
- 7つの方法を比較!用途別おすすめ早見表
- よくあるトラブルと解決方法
- 知っておくと便利!連番に関する応用テクニック
- まとめ:Excel連番の自動化で業務効率を大幅アップ
- よくある質問(FAQ)
Excelで連番を自動入力したい!よくある悩みと解決策
「Excelで番号を手入力するのが面倒…」「行を削除すると連番がズレてしまう…」こんな悩みを抱えていませんか?顧客リストや在庫管理表など、Excelで連番(通し番号)を使う場面は非常に多いものです。
しかし、手動で番号を振ると、行の追加・削除のたびに番号を振り直す手間が発生します。さらに、データが数百行・数千行になると、その修正作業だけで大きな時間ロスになります。
この記事では、Excelで連番を自動で振る方法を7つ、初心者から中級者まで使えるテクニックとして網羅的に解説します。行の追加や削除に強い方法、条件付きで連番を振る方法まで、実務ですぐに役立つ内容をお届けします。自分の用途に合った方法を見つけて、日々の業務を効率化しましょう。
方法1:オートフィルで連番を振る(最も基本的な方法)
Excelで連番を自動入力する最も基本的な方法が「オートフィル」です。マウス操作だけで簡単に連番を作成できるため、Excel初心者の方にまずおすすめしたいテクニックです。
オートフィルの基本手順
- セルA1に「1」、セルA2に「2」と入力します
- A1とA2の2つのセルを選択します
- 選択範囲の右下にある小さな四角(フィルハンドル)にマウスを合わせます
- マウスポインターが「+」の形に変わったら、下方向にドラッグします
- ドラッグした分だけ連番(3, 4, 5…)が自動入力されます
1つのセルだけで連番を振るコツ
実は、セルA1に「1」だけ入力した状態でも連番を振る方法があります。A1を選択してフィルハンドルをドラッグする際に、Ctrlキーを押しながらドラッグしてください。これで1, 2, 3…と連番が入力されます。
Ctrlキーを押さずにドラッグすると「1, 1, 1…」と同じ値がコピーされるだけなので注意しましょう。
オートフィルのメリット・デメリット
| 項目 | 内容 |
|---|---|
| メリット | 操作が簡単で直感的。関数の知識が不要 |
| デメリット | 行を追加・削除すると番号がズレる。手動で再設定が必要 |
| 適した場面 | データの追加・削除がほとんどない固定的なリスト |
オートフィルは手軽ですが、入力される値は「数値」そのものです。そのため、行を挿入したり削除したりしても番号は自動で更新されません。頻繁にデータを編集するリストには、次に紹介する関数を使う方法が適しています。
方法2:ROW関数で行番号を利用して連番を自動化する
行の追加・削除に自動対応させたい場合、ROW関数が非常に便利です。ROW関数はセルの行番号を返す関数で、連番の自動作成に広く使われています。
ROW関数の基本構文
ROW関数の構文は以下のとおりです。
=ROW([参照])
引数を省略すると、その関数が入力されているセルの行番号を返します。たとえば、A3セルに「=ROW()」と入力すると「3」が返されます。
1から始まる連番を作る方法
データが1行目から始まることは少なく、多くの場合は見出し行があります。たとえば、2行目からデータが始まる場合、A2セルに以下の数式を入力します。
=ROW()-1
A2セルの行番号は「2」なので、2-1=1となり、連番の「1」が表示されます。A3なら2、A4なら3…と自動で連番になります。
見出しが2行ある場合(3行目からデータ開始)は「=ROW()-2」とします。つまり、データ開始行の行番号から1を引いた値を、ROW()から引けばよいのです。
ROW関数の実践的な活用例
たとえば、100名分の顧客リストを管理するケースを考えましょう。1行目が見出し、2行目以降がデータです。
- A2セルに「=ROW()-1」と入力します
- A2セルをコピーし、A3からA101まで貼り付けます
- 途中で行を挿入しても、すべての番号が自動で再計算されます
ROW関数を使えば、行の挿入・削除をしても連番が自動で更新されるため、データ管理の手間が大幅に減ります。ただし、行を非表示にした場合は番号が飛んでしまう点に注意が必要です。
ROW関数とCOUNTA関数を組み合わせた応用
空白行がある場合にも対応したいなら、COUNTA関数との組み合わせが有効です。具体的には、データが入力されている行だけに連番を振ることができます。
=IF(B2=””,””,ROW()-1)
この数式は、B列にデータがある場合のみ連番を表示し、B列が空白なら番号も空白にします。実務では「データがある行だけに番号を振りたい」というニーズが多いため、この組み合わせは非常に実用的です。
方法3:SEQUENCE関数で一括連番を作成する(Excel 365・2021対応)
SEQUENCE関数は、Microsoft 365およびExcel 2021以降で使える比較的新しい関数です。一つの数式で複数の連番を一気に生成できる「スピル機能」に対応しており、非常に強力です。
SEQUENCE関数の基本構文
=SEQUENCE(行数, [列数], [開始値], [増分])
| 引数 | 説明 | 既定値 |
|---|---|---|
| 行数 | 生成する連番の行数(必須) | なし |
| 列数 | 生成する連番の列数 | 1 |
| 開始値 | 連番の開始値 | 1 |
| 増分 | 連番の増加量 | 1 |
具体的な使用例
例1:1から10までの連番を作成
=SEQUENCE(10)
これだけで、入力したセルから下に向かって1から10までの連番が自動で展開されます。
例2:0から始まる偶数の連番を5個作成
=SEQUENCE(5,1,0,2)
この場合、0, 2, 4, 6, 8 という連番が作成されます。
例3:100から始まる逆順の連番
=SEQUENCE(10,1,100,-1)
100, 99, 98…91 という降順の連番が生成されます。請求書番号の逆順管理などに便利です。
SEQUENCE関数のメリット・デメリット
| 項目 | 内容 |
|---|---|
| メリット | 1つの数式で大量の連番を一括生成。増分や開始値も自由に設定可能 |
| デメリット | Excel 2019以前では使用不可。スピル範囲内にデータがあるとエラー |
| 適した場面 | 大量データへの連番振り。定型フォーマットの作成 |
SEQUENCE関数は、COUNTA関数と組み合わせてデータ件数に応じた連番を自動生成することも可能です。たとえば「=SEQUENCE(COUNTA(B2:B1000))」とすれば、B列にデータがある分だけ連番が作られます。データが増減しても自動対応するため、動的なリスト管理に最適です。
方法4:COUNTA関数で空白を除外した連番を振る
実務では、すべての行に連番を振るのではなく、データが入力されている行だけに連番を振りたいケースが頻繁にあります。このような場合、COUNTA関数を活用した方法が有効です。
COUNTA関数を使った連番の数式
B列にデータが入力されている行だけに連番を振りたい場合、A2セルに以下の数式を入力します。
=IF(B2=””,””,COUNTA($B$2:B2))
この数式の仕組みを解説します。
- IF(B2=””,””,…):B2が空白なら空白を返す
- COUNTA($B$2:B2):B2からそのセルまでの範囲で、データが入っているセルの数を数える
- $B$2は絶対参照で固定し、B2の部分は相対参照で下にコピーすると自動で変化します
実践例:途中に空白行があるリスト
たとえば、以下のようなデータを想定します。
| A列(連番) | B列(名前) |
|---|---|
| 1 | 田中太郎 |
| 2 | 鈴木花子 |
| (空白) | (空白) |
| 3 | 佐藤一郎 |
| 4 | 山田美咲 |
このように、空白行をスキップして連番を振ることができます。データの途中に空行が入るリストや、入力途中のシートでも正確な連番を維持できるため、非常に実用的です。
注意点
COUNTA関数はセルに何かしらの値が入っていれば数えます。スペースだけが入力されたセルも「データあり」と判定されるため、見た目は空白でも連番が振られてしまうことがあります。データクリーニングを事前に行うことをおすすめします。
方法5:SUBTOTAL関数でフィルター後も正しい連番を表示する
Excelでデータをフィルタリング(絞り込み)した際、通常の連番では番号が飛び飛びになってしまう問題が発生します。この問題を解決するのがSUBTOTAL関数です。
フィルター対応の連番数式
A2セルに以下の数式を入力します。
=IF(B2=””,””,SUBTOTAL(103,$B$2:B2))
SUBTOTAL関数の第1引数「103」は、非表示の行を無視してCOUNTA(データ数カウント)を行うという意味です。フィルターで非表示になった行はカウントされないため、絞り込み後も1から始まる連番が表示されます。
SUBTOTAL関数の機能番号一覧(連番に関連するもの)
| 機能番号 | 関数 | 説明 |
|---|---|---|
| 3 | COUNTA | 空白でないセルの個数(非表示行も含む) |
| 103 | COUNTA | 空白でないセルの個数(非表示行を除く) |
| 2 | COUNT | 数値セルの個数(非表示行も含む) |
| 102 | COUNT | 数値セルの個数(非表示行を除く) |
実務での活用シーン
たとえば、1000件の売上データから「東京支店」のデータだけをフィルターで絞り込んだとします。通常のROW関数による連番では「3, 7, 15, 22…」と元の行番号に基づいた飛び飛びの番号になります。しかし、SUBTOTAL関数を使えば「1, 2, 3, 4…」と連続した番号が表示されます。
フィルター機能を頻繁に使うデータベース型のシートでは、SUBTOTAL関数による連番が最も実用的です。印刷時にも見やすい資料が作成できます。
方法6:テーブル機能と構造化参照で連番を自動管理する
Excelのテーブル機能(Ctrl+Tで作成)を活用すると、データの追加時に連番の数式が自動で拡張されます。手動で数式をコピーする手間がなくなるため、大規模なデータ管理に非常に適しています。
テーブルで連番を設定する手順
- データ範囲を選択し、Ctrl+Tを押してテーブルを作成します
- テーブルの連番列(例:A列)の最初のデータ行に「=ROW()-ROW(テーブル名[#見出し])」と入力します
- Enterキーを押すと、テーブル内の全行に数式が自動で反映されます
- 新しい行をテーブルに追加すると、連番も自動で追加されます
もっとシンプルな方法
テーブルの連番列の最初のセルに以下を入力する方法もあります。
=ROW()-ROW(テーブル1[#見出し])
「テーブル1」の部分はテーブル名に応じて変更してください。テーブル名はデザインタブで確認・変更できます。
テーブル機能のメリット
- 行追加時に数式が自動で拡張される
- 構造化参照により数式が読みやすい
- フィルターやスライサーとの相性が良い
- 書式も自動で適用される
テーブル機能は、Excelのデータ管理において非常に強力なツールです。連番の自動化だけでなく、データの整理・分析・集計にも役立ちます。まだテーブル機能を使っていない方は、この機会にぜひ導入を検討してください。
方法7:VBAマクロで連番を完全自動化する(上級者向け)
より高度な自動化を求める場合、VBA(Visual Basic for Applications)を使って連番を完全自動化する方法があります。行の追加・削除・並び替え後に自動で連番を振り直すことが可能です。
基本的なVBAコード例
以下は、A列に連番を自動で振り直すシンプルなマクロです。
Sub 連番振り直し()
このコードをシートのイベントに設定することもできます。たとえば、Worksheet_Changeイベントを使えば、データが変更されるたびに自動で連番が更新されます。
具体的なVBAコード:
Sub AutoNumber()
Dim lastRow As Long
Dim i As Long
lastRow = Cells(Rows.Count, 2).End(xlUp).Row
For i = 2 To lastRow
If Cells(i, 2).Value <> “” Then
Cells(i, 1).Value = WorksheetApp lication.CountA(Range(“B2:B” & i))
Else
Cells(i, 1).Value = “”
End If
Next i
End Sub
VBAを使う際の注意点
- ファイルを「.xlsm」(マクロ有効ブック)形式で保存する必要があります
- マクロのセキュリティ設定によっては実行できない場合があります
- 他のユーザーと共有する際は、マクロの実行許可について事前に確認しましょう
- VBAに慣れていない場合は、関数ベースの方法をおすすめします
VBAは自由度が高い反面、メンテナンスの手間も増えます。関数で対応できる範囲なら関数を使い、どうしても自動化が必要な場合にVBAを検討するという判断がおすすめです。
7つの方法を比較!用途別おすすめ早見表
ここまで紹介した7つの方法を、用途や特徴で比較してみましょう。
| 方法 | 難易度 | 行の追加削除対応 | フィルター対応 | 対応バージョン |
|---|---|---|---|---|
| オートフィル | ★☆☆ | × | × | 全バージョン |
| ROW関数 | ★☆☆ | ○ | × | 全バージョン |
| SEQUENCE関数 | ★★☆ | ○ | × | 365・2021以降 |
| COUNTA関数 | ★★☆ | ○ | × | 全バージョン |
| SUBTOTAL関数 | ★★☆ | ○ | ○ | 全バージョン |
| テーブル機能 | ★★☆ | ○ | △ | 2007以降 |
| VBAマクロ | ★★★ | ○ | ○ | 全バージョン |
用途別のおすすめ
- Excel初心者でとにかく簡単に → オートフィル
- 行の追加削除が多いリスト → ROW関数
- Microsoft 365を使っている → SEQUENCE関数
- 空白行をスキップしたい → COUNTA関数(IF関数と併用)
- フィルター機能をよく使う → SUBTOTAL関数
- 大規模なデータベース管理 → テーブル機能
- 完全自動化を目指す → VBAマクロ
よくあるトラブルと解決方法
Excelで連番を自動設定する際に遭遇しやすいトラブルと、その解決方法をまとめます。
トラブル1:連番が「1, 1, 1…」になる
原因:オートフィルでCtrlキーを押さずにドラッグした、または1つのセルだけを選択してドラッグした。
解決策:2つのセル(1と2)を選択してからドラッグするか、Ctrlキーを押しながらドラッグしてください。
トラブル2:ROW関数で番号が1から始まらない
原因:ROW()の値から適切な数を引いていない。
解決策:データの開始行を確認し、「=ROW()-(開始行の行番号-1)」としてください。たとえば5行目からデータが始まるなら「=ROW()-4」です。
トラブル3:SEQUENCE関数が使えない
原因:Excel 2019以前のバージョンを使用している。
解決策:ROW関数やCOUNTA関数で代替してください。Microsoft 365へのアップグレードも検討する価値があります。
トラブル4:フィルター後に連番が飛ぶ
原因:ROW関数やオートフィルによる連番は、非表示行を考慮しない。
解決策:SUBTOTAL関数(機能番号103)を使用してください。フィルターで非表示になった行を自動的にスキップして連番を振ります。
トラブル5:数式をコピーしたら連番にならない
原因:絶対参照と相対参照の設定が正しくない。
解決策:$マーク(絶対参照)の位置を確認してください。COUNTA関数を使う場合、開始セルは$B$2のように固定し、終了セルはB2のように相対参照にする必要があります。
知っておくと便利!連番に関する応用テクニック
基本的な連番の振り方を覚えたら、以下の応用テクニックも活用してみましょう。
テクニック1:「001」のようにゼロ埋めの連番を作る
請求書番号や社員番号などで「001, 002, 003…」のようにゼロ埋めした連番が必要な場合、TEXT関数を組み合わせます。
=TEXT(ROW()-1,”000″)
この数式で、1→001、2→002、10→010のように3桁のゼロ埋め連番が作成できます。桁数を変えたい場合は「0000」のように0の数を調整してください。
テクニック2:「A-001」のようにプレフィックス付き連番
部署コードやカテゴリを連番の前に付けたい場合は、文字列結合を使います。
=”A-“&TEXT(ROW()-1,”000”)
これで「A-001, A-002, A-003…」という連番が作成できます。
テクニック3:グループごとに連番をリセットする
部署ごとやカテゴリごとに連番を1からリセットしたい場合、COUNTIF関数を使います。
=COUNTIF($C$2:C2,C2)
C列にグループ名(部署名など)が入力されている前提で、同じグループ名が出現した回数をカウントすることで、グループ内の連番を生成します。
テクニック4:飛び番号(5刻み、10刻み)の連番
5刻みの連番(5, 10, 15, 20…)を作りたい場合は、以下のようにします。
=(ROW()-1)*5
SEQUENCE関数が使える環境なら「=SEQUENCE(10,1,5,5)」で、5から始まる5刻みの連番を一括作成できます。
テクニック5:条件に合うデータだけに連番を振る
特定の条件を満たすデータにだけ連番を振りたい場合は、IF関数とCOUNTIFS関数を組み合わせます。
=IF(C2=”東京”,COUNTIFS($C$2:C2,”東京”),””)
この数式は、C列が「東京」のデータにだけ連番を振り、それ以外は空白にします。地域別の管理番号を振りたい場合などに便利です。
まとめ:Excel連番の自動化で業務効率を大幅アップ
この記事では、Excelで連番を自動で振る7つの方法を解説しました。最後に要点を整理します。
- オートフィルは最も簡単だが、行の追加削除に対応しない
- ROW関数は行の追加削除に対応でき、初心者にもおすすめ
- SEQUENCE関数はMicrosoft 365・Excel 2021以降で使える強力な新関数
- COUNTA関数を使えば空白行をスキップした連番が可能
- SUBTOTAL関数はフィルター使用時に最も適した方法
- テーブル機能は大規模データの管理と数式の自動拡張に最適
- VBAマクロは完全自動化が必要な上級者向け
- TEXT関数やCOUNTIF関数との組み合わせで、ゼロ埋めやグループ別連番も実現可能
まずは自分のExcelバージョンと用途を確認し、最適な方法を選びましょう。初心者の方にはROW関数を使った方法が最もバランスが良く、おすすめです。フィルターを多用する方はSUBTOTAL関数、Microsoft 365をお使いの方はSEQUENCE関数もぜひ試してみてください。
連番の自動化は小さな改善に思えるかもしれませんが、日々の積み重ねで大きな時間短縮につながります。今日からぜひ実践してみてください。
よくある質問(FAQ)
Excelで連番を自動で振る一番簡単な方法は?
最も簡単なのはオートフィルです。セルに1と2を入力し、2つのセルを選択してフィルハンドル(右下の小さな四角)を下にドラッグするだけで連番が作成できます。ただし、行の追加・削除に対応させたい場合は「=ROW()-1」のようにROW関数を使う方法がおすすめです。
行を挿入・削除しても連番が自動で更新される方法は?
ROW関数を使う方法が最も手軽です。たとえば2行目からデータが始まる場合、A2セルに「=ROW()-1」と入力して下にコピーします。行の挿入・削除を行っても、各セルの行番号に基づいて自動で再計算されるため、常に正しい連番が維持されます。
Excelのフィルター使用後に連番が飛ばないようにするには?
SUBTOTAL関数を使います。「=IF(B2=””,””,SUBTOTAL(103,$B$2:B2))」という数式をA2に入力してコピーしてください。機能番号「103」は非表示行を除外してCOUNTAを計算する指定で、フィルターで絞り込んだ後も1から始まる連続した番号が表示されます。
SEQUENCE関数はどのバージョンのExcelで使えますか?
SEQUENCE関数はMicrosoft 365(旧Office 365)およびExcel 2021以降で使用できます。Excel 2019以前のバージョンでは使用できないため、ROW関数やCOUNTA関数で代替する必要があります。SEQUENCE関数は一つの数式で大量の連番を一括生成できる非常に便利な関数です。
「001」のようにゼロ埋めした連番を作るにはどうすればいいですか?
TEXT関数とROW関数を組み合わせます。たとえば「=TEXT(ROW()-1,”000″)」と入力すると、1→001、2→002、10→010のように3桁のゼロ埋め連番が作成できます。桁数を変えたい場合は、TEXT関数の第2引数の0の数を調整してください(4桁なら「0000」)。
グループごとに連番をリセットする方法はありますか?
COUNTIF関数を使います。たとえばC列にグループ名がある場合、「=COUNTIF($C$2:C2,C2)」と入力すると、同じグループ名が出現するたびに1からカウントし直す連番が作成されます。部署別やカテゴリ別の管理番号を振りたい場合に便利です。
Excelの連番で空白行をスキップする方法は?
IF関数とCOUNTA関数を組み合わせます。「=IF(B2=””,””,COUNTA($B$2:B2))」とA2に入力してコピーすると、B列にデータがある行だけに連番が振られ、空白行は番号なし(空白)になります。データ入力途中のリストでも正確な連番を維持できます。

コメント