【Google スプレッドシート】シートの最終行まで動的に連番を採番する
概要
Google スプレッドシートでTCG(トレーディングカードゲーム)の戦績を記録するシートを作成した際、シートの行数が増えても自動で連番を振る仕組みを実装しました。
汎用的で他の用途にも使いまわせそうだったため、備忘録としてまとめます。
実装
採番を始めたい最初のセルに、以下の式を入力します。
code:式
=SEQUENCE(ROWS($A$3:$A))
これで、範囲 $A$3:$A の行数に応じて自動的に1からの連番が付与されます。
動作例
下の動画のように、行を追加しても自動で採番されます。
https://gyazo.com/0e9b0e867a37e0e5047d657aa65ccb13
解説
SEQUENCE(行数, [列数], [開始値], [増分量])
指定した開始値で始まり、指定した分量で増加する連続した数字のグリッドを返します。
デフォルトの数列は 1 で始まり 1 ずつ増加します。
※Googleスプレッドシートのヘルプより
Excelでいう「スピル」と同様に、隣接セルまで自動で結果が展開されます。
行数のみ指定すれば、指定した行数分の下方向に「1から始まり1ずつ増加する」連番を作成できます。
ROWS(範囲)
指定した配列または範囲内の行数を返します。
※Googleスプレッドシートのヘルプより
範囲を A3:A のように末尾を省略すると、「A3から最終行まで」を意味します。
この性質を利用して ROWS($A$3:$A) により「A3から最終行までの行数」を取得し、それを SEQUENCE に渡すことで、シートの追加行にも自動で対応する連番が作成できます。
備考
余談ですが、採番対象範囲($A$3:$A)も自動で計算しようとすると以下のように書けますが…
code:備考_式
=SEQUENCE(ROWS(INDIRECT(ADDRESS(ROW(), COLUMN()) & ":" & SUBSTITUTE(ADDRESS("1", COLUMN(), 4), "1", ""))))
見てのとおり可読性が大きく損なわれるため、素直に $A$3:$A のように範囲を明示するほうが無難です。
#Google_スプレッドシート