概要
「USER-0001」「USER-0002」みたいに、
文字列にキレイな連番をくっつけたい場面、よくあります。
ID-0001~ID-0100を一気に作りたい商品_001商品_002のように、桁数そろえで番号を振りたい- 行番号をそのまま使ってもいいけど、途中行を挿入してもズレないようにしたい
こういうときの王道パターンが、
TEXT 関数で「0埋め」+ ROW 関数で「連番」
という組み合わせです。
ここでは、プログラミング初心者でも「型」として丸暗記しやすいように、
代表的なパターンを噛み砕いて説明していきます。
基本の考え方(ROWで番号、TEXTで桁そろえ)
ROW 関数で「行に紐づいた数」を取る
ROW 関数は「そのセルの行番号」を返します。
例えば、
A2 のセルに
=ROW()
と書くと、結果は「2」になります。
A10 なら「10」が返ります。
これをそのまま連番として使うのが基本です。
ただし、行番号そのままだと「2,3,4,5…」のように、
「スタートが1じゃない」「桁数がそろわない」などの問題が出てきます。
そこで次に、これを「整形」する役として TEXT が登場します。
TEXT で「0001」みたいに桁数をそろえる
TEXT 関数は、
=TEXT(値,"表示形式")
という形で使います。
例えば、行番号を4桁ゼロ埋めするなら、
=TEXT(ROW(A1),"0000")
A1 にこの式 → 0001
A2 にこの式 → 0002
A10 にこの式 → 0010
のように、「行番号 → 0で埋められた番号」に変換できます。
「連番(数字)」を
「桁数をそろえた文字列」にするのが TEXT の役割です。
パターン1:シンプルに「接頭辞+連番」を作る
USER-0001、USER-0002… のように作る
A2 に次の式を入れて、下にコピーするイメージで考えます。
="USER-" & TEXT(ROW(A1),"0000")
ポイントは 2つです。
- 連番部分:
ROW(A1)
A2 に式を書くと、ROW(A1) は 1 を返します(基準セルをずらすテクニック)。 - 桁そろえ:
TEXT(ROW(A1),"0000")
1 → 0001、2 → 0002 のような 4桁に。
これを A2 に入れて下へコピーすると、
A2:USER-0001
A3:USER-0002
A4:USER-0003
…
というように、自動で連番付きのIDを量産できます。
行の位置に関係なく「1から始める」書き方
さっきは ROW(A1) を使いましたが、
「どの行に置いても“1”から始めたい」
ときは、こう書くこともできます。
例えば、A2 から始めるとして、
="USER-" & TEXT(ROW(A2)-1,"0000")
A2:ROW(A2) は 2 → 2-1 = 1 → USER-0001
A3:ROW(A3) は 3 → 3-1 = 2 → USER-0002
という仕組みです。
「開始行が何行か」-「何を引くか」で、スタート番号をコントロールできます。
パターン2:任意のプレフィックス(接頭辞)+連番
接頭辞をセルから指定して柔軟に
例えば、
B1 に接頭辞(例:EMP-)を入れておき、
A列に ID を生成したいとします。
A2 に次のように書きます。
=$B$1 & TEXT(ROW(A1),"0000")
B1 に EMP- と入れておけば、
A2:EMP-0001
A3:EMP-0002
…
B1 を USER- に変えれば、
USER-0001、USER-0002… に即座に変わります。
接頭辞をセルで管理しておくと、
「途中で仕様が変わっても式をいじらずに済む」
というメリットがあります。
パターン3:文字列+シートの行番号を組み合わせる(行数が増減してもOK)
商品名+連番のラベルを作る
例えば、B2 に商品名、
C列に「商品名+連番」のラベルを作りたいとします。
B2:りんご
B3:みかん
B4:バナナ
C2 に次の式を書き、下にコピーします。
=B2 & "_" & TEXT(ROW(A1),"000")
C2:りんご_001
C3:みかん_002
C4:バナナ_003
ROW を使っているので、行を挿入・削除したときも、
その行に応じた連番が自動的に再計算されます。
パターン4:開始番号を好きな値からにする
1001 から始めて、1002,1003… にしたい
「1 からではなく、例えば 1001 からスタートしたい」という場合は、
ROW の値に “開始番号 − 1” を足すイメージです。
例えば、A2 から始めるとして、
="ID-" & TEXT(ROW(A1)+1000,"0000")
A2:ROW(A1) は 1 → 1+1000 = 1001 → ID-1001
A3:ROW(A2) は 2 → 2+1000 = 1002 → ID-1002
という形で、1001 スタートの連番を作れます。
「ROW(A1) に何を足すか/引くか」を調整することで、
開始番号を自由にコントロールできます。
パターン5:連番だけを作って、あとで文字列と結合する
TEXT+ROW の部分を「連番専用列」として持ち、
別列で文字列と結合するやり方もあります。
例えば、
A列:連番(0001,0002,…)だけ
B列:接頭辞(自由に変更)
C列:最終ID(接頭辞+連番)
という構成にしておけば、
連番の桁数だけを変えたり、接頭辞だけ変えたり、あとからいじりやすくなります。
A2 に
=TEXT(ROW(A1),"0000")
B2 に USER- を入れ、
C2 に
=B2 & A2
とすれば、
C2:USER-0001
C3:USER-0002
のように組み合わせて使えます。
問題1
A2 に式を書き、下にコピーしてUSER-0001,USER-0002,USER-0003…
のようなIDを作りたいです(4桁ゼロ埋め)。
TEXT+ROW を使った式を書いてください。
="USER-" & TEXT(ROW(A1),"0000")
問題2
開始行が A5 のとき、A5 に式を書いて下にコピーし、EMP-0001,EMP-0002… と 1 から始まる連番を作りたいです。
ROW(A5) を使って補正する形で、TEXT+ROW の式を書いてください。
="EMP-" & TEXT(ROW(A5)-4,"0000")
※ A5 の行番号は 5 なので、5−4=1 からスタートします。
問題3
B1 に接頭辞(例:ORD-)が入っています。
A2 に式を書き、下にコピーして ORD-001,ORD-002…(3桁ゼロ埋め)の連番を作りたいです。
B1 を参照しつつ、TEXT+ROW を使った式を書いてください。
=$B$1 & TEXT(ROW(A1),"000")
問題4
A2 から連番を作りたいのですが、番号は「1001」から始めたいです。
形式は ID-1001,ID-1002… のように 4桁で表示します。
TEXT+ROW を使って、A2 に書く式を書いてください。
="ID-" & TEXT(ROW(A1)+1000,"0000")
問題5
B列に商品名があり、
C列に「商品名+アンダースコア+3桁連番」(例:りんご_001)を作りたいです。
B2 を商品名として、C2 に書く式を書いてください(3桁ゼロ埋めの連番は ROW を使ってください)。
=B2 & "_" & TEXT(ROW(A1),"000")
TEXT+ROW の“型”は、とてもシンプルです。
=TEXT(ROW(基準セル),"0000") ' 行番号 → 0埋め文字列
="PREFIX-" & TEXT(ROW(基準),"0000")
ここに「どの行を基準にするか」「何桁にしたいか」「開始番号をいくつにするか」を足していくだけで、
かなり柔軟に「文字列+連番」を設計できるようになります。
