ADVERTISEMENT

【Googleスプレッドシート】SEQUENCE関数で連続数列を生成!動的な番号付けの自動化

【Googleスプレッドシート】SEQUENCE関数で連続数列を生成!動的な番号付けの自動化
🛡️ 超解決

Googleスプレッドシートで連続した番号を振る作業は、データ数が多いほど手間がかかります。オートフィルでドラッグする方法もありますが、行数が変わるたびに更新するのは現実的ではありません。SEQUENCE関数を使えば、行数や列数に応じた連続数列を数式一つで自動生成できます。この記事では、SEQUENCE関数の基本構文から動的な番号付けの自動化テクニックまでを解説します。最後まで読めば、手動で番号を入力する必要がなくなり、スプレッドシートのメンテナンスが格段に楽になります。

【要点】SEQUENCE関数で連続数列を自動生成する3つのポイント

  • 基本構文: =SEQUENCE(行数, 列数, 開始値, 増分): 4つの引数で柔軟な数列を生成します。行数と列数は必須、開始値と増分は省略可能です。
  • 動的なサイズ指定: COUNTA関数などと組み合わせると、データの増減に合わせて数列の長さが自動調整されます。
  • 日付や時間の連続生成: 開始値に日付シリアル値を指定すれば、日付や時刻の連続データも簡単に作成できます。

ADVERTISEMENT

SEQUENCE関数の基本構文と引数

SEQUENCE関数は、指定した行数と列数にわたって連続する数値の配列を返します。基本構文は「=SEQUENCE(行数, 列数, 開始値, 増分)」です。行数と列数は必須で、デフォルトの開始値は1、デフォルトの増分は1です。たとえば「=SEQUENCE(5)」と入力すると、縦一列に1から5までの数値が生成されます。「=SEQUENCE(3,4)」では3行4列の行列が1から12まで埋まります。開始値を変更すれば任意の数から始められますし、増分を変えればスキップした数列も作れます。例えば「=SEQUENCE(5,1,10,2)」は10から始まり、12、14、16、18と2ずつ増える数列を生成します。引数を省略する場合はカンマで区切って空白にする必要はなく、末尾の引数から省略できます。

SEQUENCE関数の具体的な使用手順

基本の連続番号を作成する手順

  1. 数式を入力するセルを選択する
    連続番号を表示したい範囲の左上のセルをクリックします。ここではA1セルを選択する例で説明します。
  2. SEQUENCE関数を入力する
    「=SEQUENCE(10)」と入力します。これで10行分の連続番号(1から10)が生成されます。必要に応じて行数を変更してください。
  3. Enterキーで確定する
    選択したセルから下方向に10行にわたって1から10の数値が自動的に表示されます。オートフィルでドラッグする必要はありません。

データの増減に追従する動的な番号付け

  1. COUNTA関数でデータ行数をカウントする
    別のセル(例えばB1)に「=COUNTA(A2:A)」と入力して、A列のデータがある行数を求めます。COUNTAは空白以外のセルをカウントするので、途中に空白があっても便利です。
  2. SEQUENCEの行数にCOUNTAを組み込む
    番号を開始したいセルに「=SEQUENCE(COUNTA(A2:A))」と入力します。これでA列にデータが入力されている行数分だけ連続番号が生成されます。
  3. データを追加して動作を確認する
    A列に新しいデータを追加すると、自動的に番号の範囲が拡張されます。データを削除すれば範囲も縮小されるため、手動で修正する手間が省けます。

2次元の数列(列方向にも展開)

  1. 行数と列数を指定する
    「=SEQUENCE(5,4)」と入力すると、5行4列の範囲に1から20までの数値が左から右、上から下の順で埋まります。行と列の両方を制御できるのがSEQUENCEの強みです。
  2. 開始値と増分を調整する
    「=SEQUENCE(5,4,10,2)」とすると、10から始まり2ずつ増える数列が20個生成されます。例えば偶数だけの行列を作るときに便利です。
  3. 応用: 九九の表を作る例
    「=SEQUENCE(9,9)」で1〜81の数列を作り、その結果をARRAYFORMULAを使って掛け算に変換する方法もあります。ただし九九表にはROW関数とCOLUMN関数を組み合わせた方がシンプルな場合もあるため、状況に応じて使い分けます。

日付の連続データを生成する

  1. 開始日をシリアル値で指定する
    「=SEQUENCE(10,1,DATE(2024,1,1),1)」と入力すると、2024年1月1日から10日間の日付が表示されます。DATE関数を使うと日付を直感的に指定できます。
  2. 書式を日付に変更する
    結果のセル範囲を選択し、メニューの「表示形式」→「数字」→「日付」から好みの形式を選びます。標準では数値として表示されるため、書式設定は必須です。
  3. 月単位や年単位のスキップ
    増分を30に変更すれば月ごとの日付リスト、365に変更すれば年ごとのリストも簡単に作れます。実際の月の日数に合わせるには、EDATE関数と組み合わせるとより正確です。

SEQUENCE関数使用時の注意点と応用例

配列のサイズ制限とパフォーマンス

SEQUENCE関数は大きな配列を生成できますが、スプレッドシート全体のセル数は上限があります。Googleスプレッドシートの最大セル数は1000万ですが、1つの数式でそれを超えるとエラーになります。特にシート全体を範囲指定するような使い方は避け、必要な範囲に限定しましょう。また、大量のセルに数式が入ると再計算が重くなるため、適度なサイズに留めてください。例えば10万行を超える数列は、分割して管理することをおすすめします。

他の関数との組み合わせでエラーが出る場合

SEQUENCEの結果を別の関数の引数として使うとき、配列型の引数を受け付けない関数ではエラーになります。例えばVLOOKUPの検索値に配列を直接渡すと、最初の値しか認識されず意図しない結果になります。その場合はARRAYFORMULAでラップするか、INDEX関数を使って個別に値を取り出す必要があります。また、QUERY関数のSELECT句でSEQUENCEを直接使うことはできないため、事前に列として生成してから参照します。

動的な範囲指定で#REF!エラーが発生する場合

COUNTAなどで行数を動的に指定するとき、元データを削除するとSEQUENCEの範囲が矛盾して#REF!エラーになることがあります。この場合は数式を再入力するか、範囲を絶対参照にするなどの工夫が必要です。また、誤ってSEQUENCEの出力範囲に手動でデータを入力すると、数式が上書きされて機能しなくなります。その場合は数式を再度入力するか、Ctrl+Zで元に戻してください。

応用例: カレンダーやスケジュール表の自動生成

SEQUENCE関数で日付の連続行列を作り、WEEKDAY関数で曜日を判定すれば、動的なカレンダーが作れます。例えば「=SEQUENCE(6,7,DATE(2024,1,1),1)」で1月の最初の6週間分の日付を生成し、WEEKDAYで曜日を割り当てると土日を色分けできます。また、プロジェクト管理のタスク番号や、アンケートの回答番号など、さまざまな場面で応用できます。他の関数と組み合わせることで、手入力の手間を大幅に削減できます。

ADVERTISEMENT

SEQUENCE関数と他の数列生成方法の比較

方法 メリット デメリット
手動入力・オートフィル 直感的で簡単、初心者向け データ追加時に手動更新が必要、範囲が固定され変更に弱い
ROW関数(=ROW()-n) 単純な連番に便利、行削除にも対応、数式が軽い 開始値や増分の調整が面倒、列方向に展開できない
ARRAYFORMULA+ROW 動的な範囲に追従可能、配列として他の関数と組み合わせやすい 数式が複雑、増分の変更が難しい、巨大な範囲で重くなる
SEQUENCE関数 任意の行数列数、開始値、増分を指定可能、2次元の数列も簡単、配列を返すので他の関数と組み合わせやすい 関数の知識が必要、巨大な配列でパフォーマンス低下、一部の関数と組み合わせるときに工夫が必要

上記の表からもわかるように、SEQUENCE関数は柔軟性と簡潔さのバランスに優れています。特に2次元の数列やカスタム増分が必要な場面では、他の方法よりもはるかに効率的です。また、COUNTAなどと組み合わせることで、動的なデータ範囲に自動的に追従する点が最大の利点です。

まとめ

SEQUENCE関数を使えば、連続した数値や日付を数式一つで自動生成できます。基本構文は「=SEQUENCE(行数, 列数, 開始値, 増分)」で、COUNTAと組み合わせればデータの増減に追従する動的な番号付けも実現できます。手動入力やROW関数に比べて、柔軟性とメンテナンス性が格段に向上します。次に試す応用例として、WEEKDAY関数と組み合わせたカレンダー作成や、IMPORTRANGEと合わせて別シートのデータに番号を振る方法があります。ぜひ実際の業務やデータ整理にSEQUENCE関数を取り入れて、手間を減らしてみてください。


ADVERTISEMENT

この記事の監修者
✍️

超解決 第一編集部

疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。