SkillStack Lab 運営者の「スタック」です。
Excelで「1、2、3…」という連番や、毎日・毎週の日付をまとめて作りたいとき、セルをドラッグしていませんか。
Microsoft 365・Excel 2024・Excel 2021を使っているなら、連続データの生成にはSEQUENCE関数が便利です。1つの数式から、連番・一定間隔の数値・日付などを複数セルへ自動展開できます。
一方、すべての連番をSEQUENCEで作ればよいわけではありません。
表の各行へ番号を付けたいならROW関数やExcelテーブル、フィルター後の表示行だけ振り直したいならSUBTOTAL関数の方が扱いやすい場合があります。
自動で振り直される連番と、社員番号・商品コードなどの固定IDは分けて考えてください。行の削除や並べ替えで番号が変化する数式は、後から変わってはいけない識別番号には向きません。
私もExcelを使い始めた頃は、リストを修正するたびに連番を振り直していました。関数で番号を計算する考え方を知ってからは、表示用の通し番号を手作業で直す場面をかなり減らせました。
この記事ではSEQUENCE関数を中心に、連番、一定間隔の数値、日付、営業日、繰り返しパターンを作る方法と、ROW・SUBTOTALとの使い分けを解説します。
- SEQUENCE関数で1~100などの連番を作る方法
- 10刻み・カウントダウン・繰り返しパターンの作り方
- 日付・毎週の日付・土日祝を除く営業日の生成方法
- SEQUENCEとExcelテーブルを使うときの注意点
- ROW・SUBTOTALとSEQUENCEの使い分け
ExcelのSEQUENCE関数とは?連続した数値を自動生成できる
SEQUENCE関数は、指定した行数・列数に応じて連続した数値を生成する関数です。
例えば、A2セルに次の数式を入力します。
=SEQUENCE(10)
するとA2から下方向へ、
1、2、3、4、5、6、7、8、9、10
と自動的に展開されます。

このように、1つの数式から複数のセルへ結果が広がる仕組みをスピルと呼びます。
SEQUENCE関数の構文
=SEQUENCE(行,[列],[開始],[目盛り])
| 引数 | 意味 | 例 |
|---|---|---|
| 行 | 作成する行数 | 10 |
| 列 | 作成する列数 | 1 |
| 開始 | 最初の数値 | 1 |
| 目盛り | 次の値までの増分 | 1 |
「列」「開始」「目盛り」は省略でき、省略した場合は基本的に1が使われます。
SEQUENCE関数でよく使う連続データの作り方
1から100までの連番を作る
=SEQUENCE(100)
これだけで1から100までを縦方向へ生成できます。
10・20・30と10ずつ増やす
=SEQUENCE(10,1,10,10)
第3引数の開始値を10、第4引数の増分を10にすると、
10、20、30、40…100
という等差数列になります。
100から1ずつ減らす
=SEQUENCE(100,1,100,-1)
増分にはマイナス値も指定できるので、カウントダウンも作れます。
横方向に1~12を並べる
=SEQUENCE(1,12)
「行」を1、「列」を12にすれば、1~12が横方向へ展開されます。
月番号や年度別の見出しを作るときにも利用できます。
データ件数に合わせてSEQUENCEの連番を自動で伸ばす
実務では「固定で100行」ではなく、データ件数に合わせて連番も増減させたいことがあります。
通常のセル範囲なら、例えばB2:B1000に空白のないデータが入る前提で、次のようにできます。
=SEQUENCE(COUNTA(B2:B1000))
ただし、COUNTAは指定範囲内の「空白ではないセル」を数えるため、途中に空欄があったり、別の値が混ざったりすると期待した件数と一致しない場合があります。
=SEQUENCE(COUNTA(B:B)-1)のような列全体参照を万能式として使うのはおすすめしません。見出し以外の別データや数式が含まれていると、意図しない件数になる場合があります。
Excelテーブルの件数に連動させる方法
データをExcelテーブルで管理しているなら、テーブル名を例えばtblData、必ず入力される列を「商品名」としたうえで、テーブルの外側に次の数式を置く方法があります。
=SEQUENCE(ROWS(tblData[商品名]))
テーブルへ行を追加・削除すると構造化参照の範囲も変化するため、SEQUENCEの生成件数も追従します。
SEQUENCEのようなスピル数式そのものをExcelテーブル内へ入れることはできません。スピル数式はテーブル外へ置き、必要に応じてテーブルを参照します。
SEQUENCEとTEXTでNo-0001のような番号を作る
連番の見た目を「No-0001」「No-0002」のように整えたい場合は、TEXT関数と組み合わせます。
="No-"&TEXT(SEQUENCE(100),"0000")
結果は次のようになります。
- No-0001
- No-0002
- No-0003
一覧表の「No.」や印刷用の表示番号には便利です。
社員番号・注文番号・商品コードなど、レコードを特定するための固定IDにはこの方法を使わないでください。SEQUENCEで作った番号は行数や数式条件が変わると再計算され、同じデータの番号が後から変わる可能性があります。
「表示順を示すNo.」と「データを一意に識別するID」は別物として設計するのが安全です。
同じ数字を3回ずつ繰り返す連続データ
「1、1、1、2、2、2、3、3、3…」のように、同じ番号を一定回数繰り返すこともできます。
=ROUNDUP(SEQUENCE(30)/3,0)
SEQUENCEで1~30を作り、3で割ってからROUNDUPで整数へ切り上げています。
| SEQUENCEの値 | 3で割る | 切り上げ後 |
|---|---|---|
| 1 | 0.333… | 1 |
| 2 | 0.666… | 1 |
| 3 | 1 | 1 |
| 4 | 1.333… | 2 |
| 5 | 1.666… | 2 |
| 6 | 2 | 2 |
3行ずつ同じグループ番号を振るといった用途に使えます。
SEQUENCE関数で日付の連続データを作る
Excelでは日付も内部的には数値として扱われているため、SEQUENCEで連続した日付を生成できます。
開始日から10日分の日付を作る
A2セルへ開始日が入力されている場合は、次の数式です。
=SEQUENCE(10,1,A2,1)
A2の日付から1日ずつ増えた10個の日付が生成されます。
結果が「46251」のような数字で表示された場合は、セルの表示形式を日付へ変更してください。
毎週の日付を10週分作る
=SEQUENCE(10,1,A2,7)
増分を7にすれば、開始日から7日間隔の日付を作れます。
A2を月曜日にしておけば、毎週月曜日の日付リストとして利用できます。
土日・祝日を除く連続した営業日を作る
プロジェクトの日程や作業予定では、カレンダーの日付ではなく「営業日だけを並べたい」場合があります。
この場合は、SEQUENCE単独ではなくWORKDAY関数と組み合わせます。

10営業日分を一度に生成する
A2を開始日、H2:H30を会社で除外したい祝日・休業日の一覧とする場合は、次のようにできます。
=WORKDAY($A$2-1,SEQUENCE(10),$H$2:$H$30)
土日とH2:H30に登録した日を除き、10日分の営業日が生成されます。
WORKDAYが自動的に除外する休日は土日と、第3引数で指定した日付です。会社独自の休業日や年末年始などを除外したい場合は、それらの日付も休日リストへ登録します。
火曜・水曜休みなど定休日が違う場合
土日ではなく、火曜日・水曜日を休業日にしたい場合はWORKDAY.INTL関数を使えます。
=WORKDAY.INTL($A$2-1,SEQUENCE(10),"0110000",$H$2:$H$30)
7文字の文字列は月曜日から日曜日までを表し、1を非稼働日、0を稼働日として指定します。
"0110000"なら火曜日と水曜日を非稼働日にします。
SEQUENCEではなくROW関数を使った方がよいケース
SEQUENCEは便利ですが、一覧表の各行と1対1で番号を付けたい場合はROW関数の方が扱いやすいことがあります。
例えば、1行目が見出しで2行目からデータが始まるなら、A2へ次の数式を入れます。
=ROW()-ROW($A$1)
下へコピーすると、1、2、3…となります。
行を削除すればROWが現在位置を再計算するため、表示用の連番も詰め直されます。
通常のセル範囲では、新しい行を挿入しただけで必ず連番数式まで自動入力されるとは限りません。行追加が多い一覧ならExcelテーブルを使う方が管理しやすくなります。
Excelテーブルなら数式列を自動で拡張できる
データ範囲を選択してCtrl+TでExcelテーブルへ変換すると、計算列へ入力した数式が列全体へコピーされます。

行の追加が頻繁に発生する名簿や管理表では、SEQUENCEをテーブル内へ入れるのではなく、ROWなどの1行1結果の数式を計算列として使う方法が向いています。
オートフィル・ROW・SEQUENCE・フィルター連番など、「単純に1ずつ数字を増やす方法」そのものを詳しく比較したい場合は、次の記事で整理しています。
フィルター後の表示行だけ連番を振るならSUBTOTAL
SEQUENCEやROWでは、フィルターによって見えなくなった行を基準に連番を詰め直す用途には向きません。
フィルター後の表示行だけを1、2、3…と数えたい場合はSUBTOTALを使えます。
=SUBTOTAL(103,$B$2:B2)
この式をA2から下へコピーすると、B列の表示されている非空白セルを先頭から数えます。
103はCOUNTAに相当し、フィルターで除外された行だけでなく、手動で非表示にした行も集計対象から外します。
B列が空白の行では番号も増えません。SUBTOTALを使った連番では、社員名や商品コードなど「対象データなら必ず値が入る列」を基準にしてください。
フィルター連動を含む「数字を1ずつ増やす方法」は、連番の自動入力をまとめた記事で詳しく解説しています。
SEQUENCE関数で#SPILL!が出る主な原因
SEQUENCEを入力したときに#SPILL!と表示される場合は、結果を展開する場所を確保できていない可能性があります。
- スピル先のセルにすでに値が入っている
- 結合セルがスピル範囲に含まれている
- SEQUENCEの数式をExcelテーブル内へ入れている
- 生成する配列がワークシートの端を超えている
まず数式セルの周囲に結果を展開できる空きスペースがあるか確認してください。
連続データは目的によって関数を使い分ける
| やりたいこと | おすすめ |
|---|---|
| 1~100を一度に生成 | SEQUENCE |
| 10ずつ増加・カウントダウン | SEQUENCE |
| 毎日・毎週の日付を生成 | SEQUENCE |
| 土日祝を除く営業日 | SEQUENCE+WORKDAY |
| 休業曜日を指定した営業日 | SEQUENCE+WORKDAY.INTL |
| 表の各行へ連番 | ROW+Excelテーブル |
| フィルター後の表示行だけ採番 | SUBTOTAL |
| 後から変わらない社員・商品ID | 動的連番を使わず固定IDを管理 |
「何でもSEQUENCEに置き換える」のではなく、番号が変化してよいのか、行と連動させたいのか、フィルターへ追従させたいのかで選ぶと分かりやすくなります。
SEQUENCE関数と連続データに関するよくある質問
まとめ|SEQUENCEは連番だけでなく日付や規則数列にも使える
SEQUENCE関数は、「1、2、3…」を作るためだけの関数ではありません。
- 1~100などの連続した数値
- 10・20・30など一定間隔の数列
- 100・99・98などのカウントダウン
- 毎日・毎週の日付
- WORKDAYと組み合わせた営業日
- ROUNDUPと組み合わせた繰り返しパターン
一方、一覧表の各行へ番号を付けるならROW、フィルター後の表示順ならSUBTOTALなど、別の関数が適するケースもあります。
特に、表示用の連番と後から変わってはいけない固定IDを混同しないことが重要です。
「数字を1ずつ増やす」という目的から、オートフィル・ROW・SEQUENCE・SUBTOTALを比較したい場合は、次の記事で詳しく整理しています。
さらに、連番だけでなく転記・集計・ファイル処理などExcel作業全体を減らしたい場合は、Excel自動化7選も参考にしてください。
