エクセルで番号を振るだけなのに、途中で行を追加したら番号がズレる。フィルターをかけたら見えている行だけ連番にならない。提出前に「No.が飛んでます」と言われて、慌てて手入力で直した経験、ありませんか。
単純に1、2、3と入力してオートフィルするだけなら簡単です。でも実務では、行追加、空白行、削除、並び替え、フィルター、飛び番、部署別の採番など、地味に面倒なケースが出てきます。ここで手入力に頼ると、最後の確認でほぼ必ず止まります。
先に答えを言うと、通常の連番ならROW関数、空白行を除外するならCOUNTA関数、フィルター後も見えている行だけ採番したいならSUBTOTAL関数、Microsoft 365やExcel 2021以降ならSEQUENCE関数が便利です。この記事では、ロロメディア編集部で実際に使う場面を想定しながら、コピペで使える数式まで落とし込んで解説します。
エクセルで数字を1ずつ増やす関数の使い分け

エクセルで番号を振る作業は、最初の5行だけ見ると簡単です。でも、100行、500行、1000行になった瞬間に「どの方法で作ったか」が効いてきます。
まずは用途別に、どの関数を使うべきかを整理します。
| やりたいこと | おすすめ関数 | 使う場面 |
|---|---|---|
| 上から順に1、2、3と増やす | ROW関数 | 通常のナンバリング |
| 途中の空白行を飛ばして番号を振る | COUNTA関数 | 入力済みデータだけ採番 |
| フィルター後に見えている行だけ連番にする | SUBTOTAL関数 | 一覧表・管理表 |
| まとめて連番を自動生成する | SEQUENCE関数 | Microsoft 365、Excel 2021以降 |
| 1001、1002のように開始番号を変える | ROW関数、SEQUENCE関数 | 管理番号・伝票番号 |
| 2ずつ、5ずつ増やす | SEQUENCE関数 | 飛び番・偶数番号 |
| 条件ごとに番号を振る | COUNTIF関数 | 部署別・カテゴリ別の採番 |
この表だけで終わらせると、実務では迷います。大事なのは「番号を固定したいのか」「行の増減に追従させたいのか」です。
提出用の最終版なら値貼り付けで固定しても問題ありません。一方で、日々更新する管理表なら関数で自動採番したほうが安全です。ここを混ぜると、あとで「あれ、どこから手入力で、どこから関数だっけ?」となります。
ROW関数で数字を1ずつ増やす基本のやり方

いちばん使いやすいのはROW関数です。ROW関数は、指定したセルの行番号を返す関数です。たとえば=ROW(A1)なら1、=ROW(A2)なら2を返します。
エクセルで行番号を利用するため、下にコピーするだけで数字が1ずつ増えます。Microsoft公式でも、連続する数値を追加する方法としてROW関数が紹介されています。
1行目から始めるならROW関数をそのまま使う
資料作成中に「とりあえずNo.列を作って」と言われる場面がありますよね。納品リストやタスク管理表で、左端に番号を振るだけの作業です。
=ROW(A1)
これを下にコピーすれば、1、2、3、4と増えます。数式の意味はかなり単純で、「A1の行番号を表示している」だけです。
ただし、実務では見出し行があります。A1に「No.」と入れて、A2から番号を始めるケースが多いですよね。その場合は、そのまま=ROW(A2)と入れると2から始まってしまいます。
見出し行がある表ではROW関数から引き算する
見出しが1行ある表で、A2から1を表示したいときは、A2に次の数式を入れます。
=ROW()-1
A2の行番号は2なので、そこから1を引いて1にします。A3では3から1を引いて2、A4では4から1を引いて3になります。
ロロメディア編集部でも、記事管理表や外注管理表ではこの形をよく使います。見出しが1行だけなら、これがいちばん速いです。
もし見出しが3行あって、A4から1を始めたいなら次のようになります。
=ROW()-3
ここでつまずきやすいのは、見出し行を増やしたときです。あとから注意書きの行を追加すると、番号の開始位置がズレることがあります。見出しが増えたら、引き算の数字も見直してください。
途中に行を追加しても番号を自動で直したいとき
手入力で1、2、3と入れていると、途中に行を追加した瞬間に番号が崩れます。提出前のチェックで「12の次が12になっている」と気づくと、かなり焦りますよね。
ROW関数なら、行の位置に合わせて番号が再計算されます。新しい行を追加して数式をコピーすれば、番号を手で直す必要がありません。
ただし、関数を入れていない行には当然番号が入りません。エクセルのテーブル機能を使っている場合は、新しい行に数式が自動で引き継がれることがありますが、通常の範囲ではコピーが必要です。
SEQUENCE関数で連番を一気に作る方法

Microsoft 365やExcel 2021以降を使っているなら、SEQUENCE関数がかなり便利です。SEQUENCE関数は、指定した行数や列数に連続した数字を生成する関数です。
ROW関数は下にコピーして使う感覚ですが、SEQUENCE関数は1つのセルに入れるだけで連番が下に広がります。この広がる動きはスピルと呼ばれます。スピルとは、1つの数式の結果が隣のセルや下のセルに自動で展開される仕組みです。
1から100までの連番を一瞬で作る
100件分の一覧を作るとき、A2からA101まで番号を振る場面があります。急いでいるとオートフィルで下までドラッグしますが、途中で止まったり、範囲がズレたりすることがあります。
A2に次の数式を入れるだけで、1から100まで表示できます。
=SEQUENCE(100)
これでA2から下に100個の数字が自動で並びます。コピー操作がいらないので、件数が決まっているリストではかなり快適です。
もし500件なら、こうします。
=SEQUENCE(500)
注意点は、下のセルに別の値が入っていると展開できないことです。エクセル上でスピルエラーが出たら、数式が広がる範囲に文字や数式が残っていないか確認してください。
開始番号を1001にして管理番号を作る
社内管理表では、1から始めるより「1001」「1002」のような管理番号にしたいことがあります。請求書、問い合わせ管理、案件番号などでは、単なる連番より管理番号っぽく見せたいですよね。
この場合は、SEQUENCE関数の開始番号を指定します。
=SEQUENCE(100,1,1001,1)
この数式は、100行分、1列、1001から開始、1ずつ増やすという意味です。
読み方は最初だけ少し難しく感じますが、分解するとシンプルです。
| 引数 | 意味 | 今回の値 |
|---|---|---|
| 1つ目 | 何行作るか | 100 |
| 2つ目 | 何列作るか | 1 |
| 3つ目 | 開始番号 | 1001 |
| 4つ目 | 増やす数 | 1 |
管理番号を作るときは、あとから削除や並び替えをするかどうかも考えてください。管理番号を一度発行した後に変わると困る場合は、関数で作ったあとにコピーして「値貼り付け」して固定するのが安全です。
2ずつ増やす飛び番もSEQUENCE関数で作れる
「1、3、5、7」のように奇数だけ作りたい。「10、15、20」のように5ずつ増やしたい。こういう飛び番は、SEQUENCE関数が得意です。
A2に次の数式を入れると、1から始まり、2ずつ増えます。
=SEQUENCE(20,1,1,2)
結果は、1、3、5、7と続きます。
5ずつ増やすなら、最後の数字を5に変えます。
=SEQUENCE(20,1,10,5)
これで10、15、20、25と増えます。棚番、座席番号、抽選番号のように一定間隔で採番したいときに使えます。
空白行を除いて数字を1ずつ増やす方法

実務の表では、すべての行にデータが入っているとは限りません。途中にメモ行があったり、未入力の行が残っていたりします。
その状態でROW関数を使うと、空白行にも番号が付きます。提出前に「空白行に番号があるから消して」と言われると、地味に手間です。
COUNTA関数で入力済みの行だけ番号を振る
COUNTA関数は、空白ではないセルの個数を数える関数です。たとえばB列に名前が入っている表なら、B列に値がある行だけ数えて番号を振れます。
A2に次の数式を入れて、下にコピーします。
=IF(B2="","",COUNTA($B$2:B2))
この数式は、B2が空白ならA2も空白にし、B2に値があるならB2から現在行までの入力済み件数を数えるという意味です。
たとえばB2、B3、B5に名前が入っていて、B4が空白なら、A列は1、2、空白、3になります。空白行を飛ばして採番できるわけです。
この数式が効く場面はかなり多いです。申込者リスト、タスク一覧、商品一覧、記事管理表など、「データが入った行だけ番号を付けたい」表ならそのまま使えます。
空白に見えるセルに数式が入っているとズレる
ここでつまずきやすいのが、「見た目は空白だけど数式が入っているセル」です。たとえばB列に=""を返す数式が入っていると、COUNTA関数では空白ではないと判定される場合があります。
提出前に番号が多く出てしまい、「なぜか空白行も数えられている」と止まるのはこのパターンです。
この場合は、COUNTAではなくCOUNTIFを使って、空白ではない見た目の値だけを数える方法に変えます。
=IF(B2="","",COUNTIF($B$2:B2,"<>"))
これでB列が空白でない行を数えます。ただし、数式の結果が空文字の場合の扱いは表の作り方によって見え方が変わるため、実際の列で数行試してから全体にコピーしてください。
基準にする列は必ず1つに決める
空白行を飛ばす採番で失敗する原因は、「どの列を見て番号を振るか」が曖昧なことです。
たとえばB列は氏名、C列はメールアドレス、D列はステータスだったとします。B列が空でもC列にメールだけ入っている行があると、どの行を1件と見るか迷いますよね。
実務では、番号を振る基準列を1つ決めてください。顧客リストなら氏名、案件表なら案件名、記事管理表なら記事タイトルです。
基準列が決まると、数式も運用も安定します。「この列に値が入ったら1件として数える」と社内で共有できるので、あとから見た人も迷いません。
フィルター後に見えている行だけ連番にする方法

エクセルで一番ややこしいのが、フィルター後の連番です。
通常のROW関数やCOUNTA関数は、非表示になった行も含めて番号を計算します。つまり、フィルターで東京支店だけ表示しても、番号が1、4、9、12のように飛んで見えることがあります。
これを提出用のリストにすると、見た目がかなり悪いです。相手から見ると「番号が飛んでいる資料」に見えます。
SUBTOTAL関数で表示行だけを数える
フィルター後に見えている行だけ番号を振るなら、SUBTOTAL関数を使います。SUBTOTAL関数は、リストやデータベースの集計に使う関数で、フィルターで非表示になった行を除外して数えられます。
A2に次の数式を入れて、下にコピーします。
=SUBTOTAL(103,$B$2:B2)
ここではB列を基準にしています。B列にデータが入っている行を、表示されている範囲だけで数えます。
103はCOUNTAに近い集計方法を指定する番号です。細かい番号まで丸暗記する必要はありません。フィルター後の表示行だけ連番にしたいときは、まずこの形を覚えておけば十分です。
空白行もある場合はIF関数を組み合わせる
フィルター後の連番でさらに困るのが、空白行も混ざっている表です。単純にSUBTOTALだけ使うと、空白行の扱いで表示が崩れることがあります。
その場合は、IF関数を組み合わせます。
=IF(B2="","",SUBTOTAL(103,$B$2:B2))
B2が空白なら番号を出さず、B2に値がある場合だけ表示行の件数を数えます。
この数式は、営業リストや在庫表でかなり使えます。特に、部署別、担当者別、ステータス別にフィルターして、その状態で資料を印刷する場面では便利です。
並び替え後に番号を振り直したい場合にも使える
並び替えをすると、手入力の番号は元の行について回ります。たとえば売上順に並び替えたのに、No.が3、8、1、5のように見えてしまうことがあります。
この状態で提出すると、資料の印象が一気に雑になります。読み手は中身を見る前に「管理が甘そう」と感じてしまうかもしれません。
SUBTOTALやROW関数で採番していれば、並び替え後も表示位置に合わせて番号を振り直せます。ただし、管理番号として固定したい番号まで変わってしまうと困るので、「表示用No.」と「管理ID」は分けるのが安全です。
ナンバリングと自動採番で使う関数一覧

エクセルの採番は、1つの正解があるわけではありません。表の目的によって、使う関数を変える必要があります。
ここで一度、実務で使う関数を整理しておきます。
通常のナンバリングで使う関数
通常のナンバリングは、見た目を整えるための番号です。資料の左端にあるNo.列がこれにあたります。
この用途なら、基本はROW関数で十分です。
=ROW()-1
A2から始めるならこの形です。見出し行が2行あるなら=ROW()-2、3行あるなら=ROW()-3に変えます。
ポイントは、番号そのものに意味を持たせないことです。単なる表示用の番号なら、行追加や並び替えで変わっても問題ありません。
自動採番で使う関数
自動採番は、データが増えたときに番号も自動で増える仕組みです。手入力の管理表を脱出したいときに使います。
データ入力行だけ番号を振るなら、次の数式が実用的です。
=IF(B2="","",COUNTA($B$2:B2))
B列に値が入ると番号が付き、空白なら番号も空白になります。
ロロメディア編集部で記事管理表を作る場合なら、B列を「記事タイトル」にしておくと安定します。タイトルが入ったら1件として数えられるからです。
飛び番対応で使う関数
飛び番は、一定間隔で番号を増やす方法です。奇数番号だけ、10番刻み、100番台から開始など、管理ルールがある表で使います。
Microsoft 365やExcel 2021以降なら、SEQUENCE関数が最短です。
=SEQUENCE(50,1,100,10)
この数式なら、100、110、120と10ずつ増えます。
古いExcelでSEQUENCE関数が使えない場合は、ROW関数で代用できます。
=100+(ROW(A1)-1)*10
A1を基準にして、下へコピーすると100、110、120と増えます。少し数式は長くなりますが、古い環境でも使いやすい方法です。
001、002のようにゼロ付き連番を作る方法

資料や管理番号では、1、2、3ではなく001、002、003のように表示したいことがあります。
このとき、手入力で001と入れると、エクセル側が数字の1として扱ってしまう場合があります。提出前にゼロが消えていて、管理番号の見た目を全部直すことになる。これはかなり面倒です。
TEXT関数で3桁の連番にする
ゼロ付き連番を作るなら、TEXT関数を使います。TEXT関数は、数値を指定した表示形式の文字列に変える関数です。
A2に次の数式を入れます。
=TEXT(ROW()-1,"000")
A2から始める場合、結果は001になります。下にコピーすると002、003と続きます。
もし5桁にしたいなら、ゼロを5つにします。
=TEXT(ROW()-1,"00000")
これで00001、00002と表示されます。
接頭辞を付けて管理番号にする
案件番号や商品番号では、「A-001」「R-2026-001」のように文字を組み合わせたいことがあります。こういうときも、TEXT関数が使えます。
A2に次の数式を入れます。
="A-"&TEXT(ROW()-1,"000")
結果はA-001になります。
年度を入れたいなら、次のように作れます。
="R-2026-"&TEXT(ROW()-1,"000")
こうすると、R-2026-001、R-2026-002と並びます。
ただし、この番号を正式な管理IDとして使うなら注意してください。行を削除すると番号が詰まります。発行済み番号を変えたくない場合は、採番後に値貼り付けで固定するか、別途「発行済みID」として管理する必要があります。
部署別・カテゴリ別に数字を1ずつ増やす方法

実務では、全体で1、2、3と振るだけでは足りないことがあります。
たとえば営業部だけで1から、制作部だけで1から、経理部だけで1から番号を振りたい。カテゴリごとに採番したい。こういう場面ではCOUNTIF関数を使います。
COUNTIF関数で同じカテゴリ内だけ連番にする
COUNTIF関数は、条件に一致するセルの個数を数える関数です。たとえばC列に部署名が入っている場合、同じ部署が何回出てきたかを数えられます。
A2に次の数式を入れます。
=COUNTIF($C$2:C2,C2)
C2が営業部なら、C2から現在行までに営業部が何回出てきたかを数えます。営業部の1件目なら1、2件目なら2です。
制作部が出てきたら、制作部として1から数え直します。
| 部署 | 番号 |
|---|---|
| 営業部 | 1 |
| 営業部 | 2 |
| 制作部 | 1 |
| 営業部 | 3 |
| 制作部 | 2 |
この方法は、部署別リストやカテゴリ別商品管理で便利です。
部署名と番号をつなげてIDにする
部署別に番号を振るだけでなく、「営業-001」のようなIDにしたい場合もあります。
その場合は、TEXT関数と組み合わせます。
=C2&"-"&TEXT(COUNTIF($C$2:C2,C2),"000")
C2が営業なら、営業-001になります。同じ部署が次に出てくると営業-002です。
この数式を使うと、部署ごとに見やすい管理番号を作れます。手入力で番号を振るより、かなりミスが減ります。
ただし、部署名を変更するとIDも変わります。正式なIDとして固定したい場合は、完成後に値貼り付けしてください。
行を削除しても番号を崩したくないときの考え方

ここはかなり大事です。
エクセルの番号には、「見た目の番号」と「固定したい番号」があります。この2つを混ぜると、あとで高確率で困ります。
表示用No.は変わってもいい番号
表示用No.は、表を読みやすくするための番号です。行の順番が変われば番号も変わって問題ありません。
たとえば、会議資料の一覧番号、タスク一覧の行番号、候補リストの並び番号などです。
この場合は、ROW関数やSUBTOTAL関数で自動的に振り直すのが正解です。手入力で固定する必要はありません。
管理IDは変わってはいけない番号
一方で、管理IDは変わってはいけません。問い合わせ番号、請求番号、申込番号、案件番号などです。
この番号が行削除で変わると、過去のメールや請求書との整合性が崩れます。あとから照合するときに「このID、前と違う」となり、確認作業が増えます。
管理IDは、関数で仮作成したあとに値として固定するのが安全です。数式のままにしておくと、並び替えや削除で変わる可能性があります。
操作としては、番号列をコピーして、同じ場所に「値貼り付け」します。これで数式ではなく文字や数字として保存されます。
エクセルで数字が1ずつ増えないときの原因と対処法

「数式は合っているはずなのに増えない」
ここで手が止まると、かなりストレスですよね。
提出前に番号が全部1のままだったり、コピーしても同じ数字しか出なかったりすると、原因探しだけで時間を失います。
計算方法が手動になっている
エクセルの計算方法が手動になっていると、数式を入れても結果が更新されないことがあります。
この場合は、数式タブから計算方法を確認し、自動に戻します。手動になっていると、関数を直しても古い結果が残るため、採番ミスに見えます。
急いでいるときは、まずF9キーで再計算してみてください。それで番号が直るなら、計算方法が原因の可能性が高いです。
数式ではなく文字列として入力されている
セルに=ROW()-1と入れたのに、そのまま文字として表示されることがあります。これはセルの表示形式が文字列になっているときに起きます。
対処法は、セルの表示形式を標準に戻してから、数式を入れ直すことです。表示形式を変えるだけでは反映されない場合があるので、数式を再入力してください。
先頭にアポストロフィが入っている場合もあります。見た目では分かりにくいので、数式バーで確認すると早いです。
オートフィルがコピーになっている
1、2と入力して下にドラッグしたのに、1、1、1になってしまうことがあります。これはオートフィルが連続データではなくコピーとして動いているケースです。
関数を使わずにオートフィルするなら、最初に1と2を入力して、2つのセルを選択してから下にドラッグします。1つのセルだけをドラッグすると、同じ値のコピーになることがあります。
ただ、実務ではオートフィルだけに頼るより、ROW関数やSEQUENCE関数を使ったほうが安全です。行追加や削除に強いからです。
ロロメディア編集部で使う採番ルール

ロロメディア編集部では、記事管理表や制作進行表を作るとき、番号の役割を分けています。
最初は全部「No.」で済ませていたのですが、途中で混乱しました。記事の表示順を変えたら番号が変わり、外注先とのやり取りで「No.12の記事」が別の記事になってしまったんです。
そこから、番号は2種類に分けるようになりました。
| 種類 | 役割 | 作り方 |
|---|---|---|
| 表示用No. | 見やすく並べるため | ROW関数 |
| 管理ID | 後から変えないため | TEXT関数で作成後に値貼り付け |
| フィルター用No. | 表示行だけ数えるため | SUBTOTAL関数 |
| カテゴリ別No. | 部署や記事種別ごとに数えるため | COUNTIF関数 |
この分け方にしてから、確認作業がかなり減りました。
特に外部の人とやり取りする表では、管理IDを固定するのが大事です。自分だけが見る表なら多少ズレても直せますが、他人と共有する表では番号のズレがそのまま認識のズレになります。
目的別にそのまま使える数式まとめ

急いでいる人向けに、ここでコピペ用の数式をまとめます。
A2から1ずつ増やす
見出し行が1行で、A2から番号を始めるならこれです。
=ROW()-1
下にコピーすれば、1、2、3と増えます。
空白行を飛ばして番号を振る
B列にデータが入っている行だけ番号を付けるならこれです。
=IF(B2="","",COUNTA($B$2:B2))
B列が空白なら番号も空白になります。
フィルター後に見えている行だけ番号を振る
B列を基準に、表示されている行だけ連番にするならこれです。
=IF(B2="","",SUBTOTAL(103,$B$2:B2))
フィルターで絞り込んだ一覧を印刷したり提出したりするときに使えます。
1001から番号を始める
A2から1001、1002と増やすならこれです。
=1000+ROW(A1)
A1を基準にしているので、下にコピーすると1001、1002になります。
001、002のように3桁表示にする
A2から001、002と表示したいならこれです。
=TEXT(ROW()-1,"000")
見た目は001ですが、文字列として扱われます。計算に使う番号ではなく、管理番号や表示用として使うのがおすすめです。
2ずつ増やす
古いExcelでも使える形ならこれです。
=1+(ROW(A1)-1)*2
結果は1、3、5、7と続きます。
Microsoft 365やExcel 2021以降なら、こちらでも作れます。
=SEQUENCE(20,1,1,2)
20個の奇数番号を一気に作れます。
エクセルで数字を1ずつ増やすときの注意点

番号を振る作業で一番怖いのは、作った瞬間ではなく、あとで表を編集したときです。
最初はきれいに並んでいたのに、行削除、並び替え、フィルター、コピー貼り付けで崩れる。しかも、その崩れに気づくのが提出直前。これは本当に避けたいところです。
共有前に数式のままでいいか確認する
社内だけで使う表なら、数式のままでも問題ないことが多いです。更新するたびに自動で番号が直るので、むしろ便利です。
ただし、取引先に渡す資料や最終提出用のファイルでは、数式が残っていることで意図せず番号が変わる可能性があります。
提出用なら、採番後に値貼り付けして固定するのが安全です。特に管理番号や請求番号は、数式のまま送らないほうがいいでしょう。
表示用No.と管理番号を同じ列にしない
これもかなり重要です。
表示用No.は、並び順に合わせて変わっていい番号です。管理番号は、変わってはいけない番号です。
この2つを同じ列で扱うと、並び替えたときに混乱します。実務では、左端に「No.」、別列に「管理ID」を作るのがおすすめです。
たとえばA列に表示用No.、B列に管理ID、C列以降にデータを入れる形です。これなら、A列は関数で変わっても、B列のIDは固定できます。
まとめ

エクセルで数字を1ずつ増やすだけなら、方法はいくつもあります。でも実務で大事なのは、「どの関数を使うか」よりも「その番号を何に使うか」です。
通常のナンバリングならROW関数で十分です。空白行を除外したいならCOUNTA関数、フィルター後の表示行だけ連番にしたいならSUBTOTAL関数を使います。Microsoft 365やExcel 2021以降なら、SEQUENCE関数で一気に連番を作るのも便利です。
一方で、問い合わせ番号や案件番号のように変わってはいけない番号は、関数のままにしないほうが安全です。作成後に値貼り付けして固定してください。
エクセルの採番は、地味です。でも、地味な作業ほどミスが資料全体の信用に出ます。提出前に番号を直す時間を減らしたいなら、最初から関数で崩れにくい形にしておくのが一番ラクですよ。
参考記事:















