Excel SEQUENCE関数の使い方|連番・日付・繰り返しを自動生成

エクセルで連続データを手入力やオートフィルではなく関数で定義するメリットを解説するタイトルスライド

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

と自動的に展開されます。

ExcelのSEQUENCE関数を1つのセルへ入力し複数行へ連番がスピルする仕組み

このように、1つの数式から複数のセルへ結果が広がる仕組みをスピルと呼びます。

SEQUENCE関数はExcel for Microsoft 365、Excel 2024、Excel 2021などで利用できます。仕様はMicrosoftサポートのSEQUENCE関数でも確認できます。

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テーブル内へ入れることはできません。スピル数式はテーブル外へ置き、必要に応じてテーブルを参照します。

Microsoftも、スピルする動的配列数式は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で割る切り上げ後
10.333…1
20.666…1
311
41.333…2
51.666…2
622

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関数と組み合わせます。

Excelの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"なら火曜日と水曜日を非稼働日にします。

WORKDAY.INTLでは、週末にする曜日を番号または7文字の文字列で指定できます。詳しい仕様はMicrosoftサポートのWORKDAY.INTL functionで確認できます。

SEQUENCEではなくROW関数を使った方がよいケース

SEQUENCEは便利ですが、一覧表の各行と1対1で番号を付けたい場合はROW関数の方が扱いやすいことがあります。

例えば、1行目が見出しで2行目からデータが始まるなら、A2へ次の数式を入れます。

=ROW()-ROW($A$1)

下へコピーすると、1、2、3…となります。

行を削除すればROWが現在位置を再計算するため、表示用の連番も詰め直されます。

通常のセル範囲では、新しい行を挿入しただけで必ず連番数式まで自動入力されるとは限りません。行追加が多い一覧ならExcelテーブルを使う方が管理しやすくなります。

Excelテーブルなら数式列を自動で拡張できる

データ範囲を選択してCtrl+TでExcelテーブルへ変換すると、計算列へ入力した数式が列全体へコピーされます。

Excelテーブルで行を追加すると計算列の数式が新しい行へ自動的に適用される仕組み

行の追加が頻繁に発生する名簿や管理表では、SEQUENCEをテーブル内へ入れるのではなく、ROWなどの1行1結果の数式を計算列として使う方法が向いています。

オートフィル・ROW・SEQUENCE・フィルター連番など、「単純に1ずつ数字を増やす方法」そのものを詳しく比較したい場合は、次の記事で整理しています。

Excelで数字を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テーブル内へ入れている
  • 生成する配列がワークシートの端を超えている

まず数式セルの周囲に結果を展開できる空きスペースがあるか確認してください。

Microsoftも、スピル配列は結果を展開する範囲が必要で、Excelテーブル内ではスピル数式を利用できないと案内しています。

連続データは目的によって関数を使い分ける

やりたいことおすすめ
1~100を一度に生成SEQUENCE
10ずつ増加・カウントダウンSEQUENCE
毎日・毎週の日付を生成SEQUENCE
土日祝を除く営業日SEQUENCE+WORKDAY
休業曜日を指定した営業日SEQUENCE+WORKDAY.INTL
表の各行へ連番ROW+Excelテーブル
フィルター後の表示行だけ採番SUBTOTAL
後から変わらない社員・商品ID動的連番を使わず固定IDを管理

「何でもSEQUENCEに置き換える」のではなく、番号が変化してよいのか、行と連動させたいのか、フィルターへ追従させたいのかで選ぶと分かりやすくなります。

SEQUENCE関数と連続データに関するよくある質問

SEQUENCE関数はExcel 2021で使えますか?

使えます。Microsoft 365のほか、Excel 2024、Excel 2021でもSEQUENCE関数に対応しています。

SEQUENCE関数をExcelテーブルの中で使えますか?

スピルする動的配列数式はExcelテーブル内では利用できません。テーブル外へSEQUENCEを置き、必要なら構造化参照でテーブル内のデータを参照します。

行を削除しても連番を自動で詰めたい場合は?

SEQUENCEまたはROW関数を使えます。表の各データ行へ番号列を持たせる場合は、ROW関数をExcelテーブルの計算列として使う方法も便利です。

フィルターで表示されている行だけ1から振り直せますか?

SUBTOTAL関数を使えます。例えば、常に値が入るB列を基準に=SUBTOTAL(103,$B$2:B2)を下へコピーすると、表示対象に合わせて番号を数え直せます。

SEQUENCEで社員番号を自動作成しても大丈夫ですか?

後から変わってはいけない社員番号・注文番号・商品IDなどにはおすすめしません。SEQUENCEは条件や件数に応じて再計算されるため、表示用の通し番号と恒久的なIDは分けて管理してください。

土日祝を除いた日付をまとめて作れますか?

WORKDAYとSEQUENCEを組み合わせれば作れます。土日以外を定休日にする場合はWORKDAY.INTLを利用します。

まとめ|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選も参考にしてください。


次は、仕事で使えるスキルをもう一段積み上げる

SkillStack Labでは、Excel・生成AI・自動化・オンライン学習を、実務で使うことを前提に解説しています。今の課題に近いテーマから次の記事へ進んでみてください。

生成AIを仕事で使いたい

ChatGPTなどを「触ったことがある」から、実際の仕事で使えるレベルへ進みたい方へ。

生成AIの勉強方法・学習順序を見る →

Excel作業を自動化したい

関数だけでは限界を感じてきたら、Power Query・VBA・Pythonなども含めて自動化を考えます。

Excel業務を自動化する方法を見る →

体系的にスキルを学びたい

Excel・VBA・Python・生成AIなどを、動画講座で効率よく学びたい方へ。

社会人向けUdemy講座の選び方を見る →

何から始めるか迷ったら、今の仕事で最も時間がかかっている作業や、身につけたいスキルに近いテーマから選んでください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次