概要
「一度使ったIDは二度とかぶらせたくない」
「USER-0001, USER-0002… のように、表の行ごとに“重複しないID”を自動で振りたい」
「日付+連番で、毎回ユニークな管理番号を作りたい」
こういうときに Excel だけでできる、シンプルな “重複しないID生成”の定番パターンが
TEXT 関数 + 行番号(ROW)や件数カウントの組み合わせです。
ここでは、
- 一番カンタンな「行番号ベース」の方法
- 行の挿入・削除にも強い「件数カウントベース」
- 日付+連番で“ほぼユニーク”なIDを作る方法
を、初心者向けにかみ砕いて解説します。
基本の考え方(IDは「文字列」として設計する)
IDは、Excelから見れば 「ただの文字列」 です。
たとえば、
USER-0001
EMP-20260105-0003
といった見た目のIDは、実体としては
「決めたルールで組み立てた文字列」
にすぎません。
なので、
接頭辞(固定の文字)
+
日付や分類コード(意味のある情報)
+
重複しないための“通し番号”
という 3 要素をどう組み合わせるか、という発想にするとスッキリします。
ここで TEXT 関数は、
「通し番号を 0001 のように桁そろえする」
「日付を 20260105 などの形に整える」
“見た目整形係”として使います。
パターン1:行番号ベースのシンプルなユニークID
行ごとに必ず違うIDを振る(一番簡単な方法)
同じシート内で、「1行に1件のレコード」 という前提なら、
そのシートの行番号は必ずユニークです。
行番号をそのまま、桁そろえした「通し番号」として使う方法が一番シンプルです。
A2 に次の式を書いて下へコピーするとします。
="ID-" & TEXT(ROW(A1),"0000")
A2:ROW(A1) は 1 → ID-0001
A3:ROW(A2) は 2 → ID-0002
A4:ROW(A3) は 3 → ID-0003
という具合に、このシート上では 二度と同じ値にならない ID が自動で振られます。
- “ID-” 部分は接頭辞(好きに変更可能)
- TEXT(ROW(A1),”0000″) は「行番号 → 4桁ゼロ埋め」の通し番号
として働きます。
この方法のポイントは「行番号が変わらない限り重複しない」こと。
同じ行に別レコードを上書きしない限り、IDの重複は起きません。
パターン2:何行目からでも“1番”から始めるユニークID
途中の行から始めたいときの補正
たとえば、ヘッダーがあって データは 5 行目から始まる とします。
5行目を「0001」、6行目を「0002」… のようにしたいなら、
ROW から“開始行-1”を引くのが定番です。
A5 に次の式を書き、下へコピーします。
="ID-" & TEXT(ROW(A5)-4,"0000")
A5:ROW(A5)=5 → 5-4 = 1 → ID-0001
A6:ROW(A6)=6 → 6-4 = 2 → ID-0002
このように、「何行目からでも 1 番スタート」が実現できます。
シート内で「行+補正」の組み合わせは一意なので、やはり重複しません。
パターン3:日付+連番で“ほぼユニーク”なIDを作る
「20260105-0001」のような日付付きID
同じシート内だけでなく、
「日をまたいでも絶対にかぶりにくいID」が欲しいとき、
日付+その日の通し番号 がよく使われます。
たとえば、
2026年1月5日に登録した1件目 → 20260105-0001
2026年1月5日の2件目 → 20260105-0002
といったIDです。
シンプルな例として、「行番号を通し番号として使う」パターンだと、A2 にこう書けます。
=TEXT(TODAY(),"yyyymmdd") & "-" & TEXT(ROW(A1),"0000")
意味は、
- TEXT(TODAY(),”yyyymmdd”)
→ 今日の日付を 20260105 のように 8 桁に整形 - TEXT(ROW(A1),”0000″)
→ 行番号を 4 桁ゼロ埋め
これを足して、
20260105-0001
20260105-0002
という ID になります。
TODAY() の部分を「登録日が入ったセル」に変えれば、
行ごとに日付+通し番号 の組み合わせで、ほぼユニークなIDを作れます。
(※「同じ日・同じ行に別レコードを上書きしない限り」は重複しません)
パターン4:件数カウントベースの連番(途中に空白行があってもOK)
COUNTA で「今までの件数+1」を使う
Row ベースだと、「途中にタイトル行を入れた」「空白行がある」などで、
必ずしも「行番号 = 通し番号」にならないことがあります。
そういうときは、「同じ列で データが入っている件数+1」を通し番号にするパターンが便利です。
例えば、A列にIDを入れるとして、
A2 に次の式を書きます。
="ID-" & TEXT(COUNTA($A$1:A1)+1,"0000")
ここがポイントです。
- COUNTA($A$1:A1)
→ 自分の1つ上までの範囲に「何件データが入っているか」を数える - +1
→ 「次の番号」にする - TEXT( … ,”0000″)
→ 4桁ゼロ埋め
A2 なら、$A$1:A1 にまだ何もない → COUNTA = 0 → +1 で 1 → ID-0001
A3 なら、$A$1:A2 に1件ある → COUNTA = 1 → +1 で 2 → ID-0002
途中に空白行を入れても、
ID が入っている行数を数えているだけなので、
「入力済み件数+1」から ID を生成できます。
これもまた、「同じ列内で二度と同じ番号にならない」という意味で“重複しない”IDです。
パターン5:フォーマットだけ TEXT に任せる“ID生成の型”
ここまでのパターンの共通点は、
ユニークさの元ネタ(行番号・件数・日付)
→ これは ROW や COUNTA、TODAY などが担当
見た目の整形(0001・20260105)
→ TEXT が担当
という役割分担になっていることです。
TEXT を使う“型”だけまとめると、次のようになります。
数値 → 4桁 0 埋め
=TEXT(数値,"0000")
日付 → yyyymmdd 形式
=TEXT(日付セル,"yyyymmdd")
この 2 パターンさえ押さえておけば、
接頭辞 & TEXT(日付,”yyyymmdd”) & “-” & TEXT(通し番号,”0000″)
のように組み立てるだけで、
かなり実用的な「重複しないID」のフォーマットを、自在に設計できるようになります。
問題1
A2 に式を書き、下にコピーしてID-0001,ID-0002,ID-0003…
のようなユニークIDを作りたいです。
TEXT と ROW を使い、A2 に書く式を書いてください。
(4桁ゼロ埋め、接頭辞は ID- とします)
="ID-" & TEXT(ROW(A1),"0000")
問題2
データは 5 行目から始まります。
A5 に式を書き、下へコピーして、ID-0001 から始まる連番IDを作りたいです。
ROW(A5) を基準に、行番号を補正して 1 から始めるようにした TEXT+ROW の式を書いてください。
="ID-" & TEXT(ROW(A5)-4,"0000")
問題3
A列にIDを入れたいです。
A2 に式を書き、下へコピーすると、
A列の「これまでに入力されている件数+1」を 4桁ゼロ埋めした ID
(ID-0001,ID-0002…)が振られるようにしたいです。
COUNTA と TEXT を使った式を書いてください。
(カウント範囲は $A$1:A1 とし、接頭辞は ID- とします)
="ID-" & TEXT(COUNTA($A$1:A1)+1,"0000")
問題4
B列に「登録日」が日付で入っています(例:2026/1/5)。
C列に「日付+4桁連番」のIDを作りたいです。
C2 に式を書き、下へコピーすると、20260105-0001,20260105-0002… のようなIDになるようにしてください。
日付は TEXT(B2,”yyyymmdd”)、連番は ROW(A1) を使うものとします。
=TEXT(B2,"yyyymmdd") & "-" & TEXT(ROW(A1),"0000")
問題5
A列に“すでに存在するID”が入っており、
B列に「新規の行にだけ新しいID」を振りたいです。
B2 に式を書き、下へコピーすると、
A列の上からの件数+1 を 4桁ゼロ埋めした NEW-0001,NEW-0002… が入るようにしたいです。
(ID の元ネタは COUNTA、整形は TEXT を使い、接頭辞は NEW- とします)
="NEW-" & TEXT(COUNTA($A$1:A1)+1,"0000")
重複しないID生成のキモは、
「ユニークな“元ネタ”(行番号・件数・日付+通し)を決める」
+
「その数字を TEXT で“見た目のルール通り”に整形する」
この 2 段階です。
TEXT の型さえつかめば、
あとは「何を ID の元ネタにするか」を決めるだけで、
実務で使える“かぶらないID”を Excel だけで量産できるようになります。
