• 作成日 : 2025年8月25日

SEQUENCE関数の使い方:エクセルで連続した数値の配列を自動生成する方法

SEQUENCE関数は、指定した行数と列数で連続した数値の配列を自動生成するエクセルの動的配列関数です。連番の作成、日付リストの生成、座席表の番号付け、テストデータの作成など、規則的な数値配列が必要な様々な場面で活用されています。Excel 365で利用可能なこの関数は、従来の面倒な連番作成作業を簡略化できます。

本記事では、SEQUENCE関数の基本的な使い方から実務での応用例、他の動的配列関数との組み合わせ、カレンダー作成などの高度な活用方法、そしてよくある使用上の注意点とその対策まで、わかりやすく解説します。

SEQUENCE関数の使い方

SEQUENCE関数とは

SEQUENCE関数は、指定した行数と列数の範囲に、連続した数値を自動的に配置する関数です。この関数の最大の特徴は、動的配列として機能することで、一つのセルに数式を入力するだけで、複数のセルに自動的に結果が展開(スピル)されることです。開始値や増分値も自由に設定でき、昇順・降順、整数・小数など、様々なパターンの数列を簡単に作成できます。

従来はオートフィルやROW関数を使って作成していた連番も、SEQUENCE関数なら瞬時に、しかも動的に生成できます。データの追加や削除に応じて自動的に更新されるため、メンテナンスの手間も大幅に削減されます。

基本構文

SEQUENCE関数の構文は次のとおりです。

=SEQUENCE(行, [列], [開始], [増分])

各引数について詳しく説明します。

  • :生成する配列の行数を指定します。必須引数です。
  • :生成する配列の列数を指定します。省略した場合は1列となります。
  • 開始:数列の開始値を指定します。省略した場合は1から開始します。
  • 増分:次の値への増加量を指定します。省略した場合は1ずつ増加します。負の値を指定すると降順になります。

基本的な使用例

実際にSEQUENCE関数を使用してみましょう。

1から10までの縦の連番:

=SEQUENCE(10)

// 結果:1, 2, 3, 4, 5, 6, 7, 8, 9, 10(縦に配置)

3行4列の連番表:

=SEQUENCE(3, 4)

// 結果:

// 1  2  3  4

// 5  6  7  8

// 9  10 11 12

100から始まる5刻みの数列:

=SEQUENCE(5, 1, 100, 5)

// 結果:100, 105, 110, 115, 120(縦に配置)

降順の数列:

=SEQUENCE(5, 1, 10, -1)

// 結果:10, 9, 8, 7, 6(縦に配置)

小数を含む数列:

=SEQUENCE(5, 1, 0, 0.5)

// 結果:0, 0.5, 1, 1.5, 2(縦に配置)

スピル機能の理解

SEQUENCE関数は動的配列(スピル)機能を持ちます。

スピルとは
  • 一つのセルに入力した数式が、自動的に隣接セルに展開される機能
  • 結果の範囲は青い枠線で表示される
  • スピル範囲内のセルは編集できない(#SPILL!エラーを防ぐため)

スピルエラーの対処:

// スピル範囲に既存データがある場合

対処1:既存データを削除または移動

対処2:SEQUENCE関数の行数・列数を調整

SEQUENCE関数の利用シーン

連番・ID番号の生成

各種の識別番号を自動生成します。

社員番号の生成:

=”EMP” & TEXT(SEQUENCE(100, 1, 1001), “0000”)

// 結果:EMP1001, EMP1002, …, EMP1100

請求書番号の作成:

=TEXT(TODAY(), “yyyymm”) & “-” & TEXT(SEQUENCE(50), “000”)

// 結果:202403-001, 202403-002, …

商品コードの連番:

=”PROD-” & TEXT(SEQUENCE(20, 1, 100, 10), “0000”)

// 結果:PROD-0100, PROD-0110, …, PROD-0290

日付リストの作成

連続した日付を簡単に生成します。

1ヶ月分の日付リスト:

=SEQUENCE(31, 1, DATE(2024,3,1), 1)

// 3月1日から31日間の日付

営業日のみのリスト:

=WORKDAY(DATE(2024,3,1)-1, SEQUENCE(20))

// 3月の営業日20日分

週単位の日付:

=SEQUENCE(8, 1, TODAY(), 7)

// 今日から8週間分の同じ曜日

座席表・グリッドの作成

行列形式の番号付けに活用します。

教室の座席番号:

=SEQUENCE(6, 8)

// 6行8列の座席配置(1-48の番号)

駐車場の区画番号:

=”A-” & SEQUENCE(5, 10)

// A-1からA-50までの区画番号

会議室の座席配置:

=IF(SEQUENCE(4, 6) <= 20, SEQUENCE(4, 6), “”)

// 20席分のみ番号表示

テストデータの生成

ダミーデータや検証用データを作成します。

売上データのシミュレーション:

=SEQUENCE(12, 1, 100000, 5000)

// 月次売上(10万円から月5千円増)

時系列データの作成:

時刻 = TIME(8, 0, 0) + SEQUENCE(10, 1, 0, 1/24)

// 8時から1時間刻みで10個

温度データの模擬:

=20 + SEQUENCE(24, 1, 0, 0.5)

// 20度から0.5度刻みで24時間分

数式の繰り返し計算

同じ計算を複数回実行する際の補助として使用します。

累積合計の計算:

=SUMIFS($B$2:$B$100, $A$2:$A$100, “<=”&SEQUENCE(99))

// 1から99までの累積合計

複利計算の推移:

元本 = 100000

利率 = 1.05

=元本 * 利率 ^ SEQUENCE(10, 1, 0)

// 10年間の複利推移

SEQUENCE関数の応用・他関数との組み合わせ

INDEX関数との組み合わせ

特定のパターンでデータを抽出します。

// 1行おきにデータを取得

=INDEX(データ範囲, SEQUENCE(10, 1, 1, 2))

// 逆順でデータを表示

=INDEX(データ範囲, SEQUENCE(ROWS(データ範囲), 1, ROWS(データ範囲), -1))

MOD関数でのパターン作成

周期的なパターンを生成します。

// 1,2,3の繰り返し

=MOD(SEQUENCE(12)-1, 3) + 1

// 結果:1,2,3,1,2,3,1,2,3,1,2,3

// 曜日パターン(0=日曜)

=MOD(SEQUENCE(30)-1, 7)

IF関数での条件付き番号

特定条件での番号付けを行います。

// 偶数のみ表示

=IF(MOD(SEQUENCE(20), 2) = 0, SEQUENCE(20), “”)

// 5の倍数を強調

=IF(MOD(SEQUENCE(50), 5) = 0, “★” & SEQUENCE(50), SEQUENCE(50))

TRANSPOSE関数での行列変換

縦横を入れ替えた配列を作成します。

// 横一列の連番

=TRANSPOSE(SEQUENCE(10))

// 行列の転置

=TRANSPOSE(SEQUENCE(3, 4))

動的なカレンダー作成

月間カレンダーを自動生成します。

開始日 = DATE(2024, 3, 1)

開始曜日 = WEEKDAY(開始日)

日付配列 = SEQUENCE(6, 7, 1-開始曜日+1)

=IF(MONTH(開始日+日付配列-1)=MONTH(開始日), DAY(開始日+日付配列-1), “”)

FILTER関数との連携

動的な条件でのフィルタリング:

// 10の倍数のみ抽出

=FILTER(SEQUENCE(100), MOD(SEQUENCE(100), 10) = 0)

RANDARRAY関数との組み合わせ

ランダムな順序の連番:

=SORTBY(SEQUENCE(10), RANDARRAY(10))

// 1-10をランダムな順序で表示

SEQUENCE関数のよくあるエラーと対策

#SPILL!エラーの対処

スピル範囲に障害物がある場合に発生します。

対処法
  1. スピル範囲を確認(数式セルを選択すると青枠表示)
  2. 障害となるデータを移動または削除
  3. または、SEQUENCE関数の行・列数を調整

#NAME?エラーの対処

SEQUENCEは Microsoft 365/Excel 2021以降(および Excel for the web) で利用可能。Excel 2019/2016 以前では未実装のため #NAME? が発生します。

代替方法(従来のExcel)
  • ROW関数を配列数式として使用(結果範囲を選択 → =ROW(A1:A10) → Ctrl+Shift+Enter)
  • またはオートフィル/「連続データの作成」を利用

メモリ不足エラー

過度に大きな配列を生成しようとした場合:

// 非推奨:=SEQUENCE(1000000)

// 推奨:必要な範囲のみ生成

=SEQUENCE(1000)

循環参照の回避

SEQUENCE関数の結果を同じ計算に含めない:

誤:=SUM(A1:A10) をA5に入力(A1にSEQUENCE)

正:=SUM(A1:A10) を別の列に入力

小数の精度問題

小数の増分での丸め誤差:

// 0.1刻みで誤差が累積する場合

=ROUND(SEQUENCE(10, 1, 0, 0.1), 1)

日付の表示形式

日付の表示形式
  • 日付として扱いたい(計算に使う):=SEQUENCE(7,1,TODAY()) の結果セルの表示形式を「日付/”yyyy/mm/dd”」に設定(Ctrl+1)。SEQUENCEの結果は日付シリアルなのでそのまま日付です。
  • 表示だけ文字列にしたい:=TEXT(SEQUENCE(7,1,TODAY()),”yyyy/mm/dd”)(※この場合は文字列になり、計算には不向き)

パフォーマンスの最適化

大きな配列での処理速度:

// 非効率:全体を生成してからフィルタ

=FILTER(SEQUENCE(10000), 条件)

// 効率的:必要な分だけ生成

=SEQUENCE(必要数)

SEQUENCE関数で連続データを効率的に生成する

SEQUENCE関数は、指定した行数・列数にわたって連続した数値を自動生成できる、Microsoft 365/Excel 2021以降(および Excel for the web)で利用可能な動的配列関数です。

開始値や増分、方向(昇順・降順)を柔軟に設定でき、ID付与・日付リスト・座席番号・テストデータなど、規則性のある配列作成に適しています。

従来のROW関数やオートフィルによる手作業と異なり、SEQUENCE関数はセル1つに数式を入力するだけで複数セルに自動展開(スピル)され、データ追加時も自動更新されるため、構造の保守や再利用性が高くなります。

IF・INDEX・MOD・TEXTなど他の関数と組み合わせることで、条件付きパターン、日付や時刻の自動生成、ランダム順序の並び替え、可視化パターンの形成にも応用可能です。

動的配列関数の基本として押さえておくことで、さまざまな自動化やテンプレート作成に活用できます。


※ 掲載している情報は記事更新時点のものです。

※本サイトは、法律的またはその他のアドバイスの提供を目的としたものではありません。当社は本サイトの記載内容(テンプレートを含む)の正確性、妥当性の確保に努めておりますが、ご利用にあたっては、個別の事情を適宜専門家にご相談いただくなど、ご自身の判断でご利用ください。

関連記事