[Excel] 一意なIDを自動的に振り当てる

Googleスプレッドシートのセルに一意なIDを自動で付けたかった。
上から下へ順にカウントアップするものを。

  • 上にあるセルを数をカウントし、カウント結果をIDにする
  • カウント結果が3桁未満の場合は数字の前に0を1~2個つけて揃える
  • プレフィックス文字列も欲しい
  • 1行目には固定のラベルが入っているから2行目以降にID振りたい

ってことがやりたくて、図にするとこんなんで

    ID  | name|dat
--------------------
data-001|hoge |100
data-002|foo  |200
data-003|bar  |150
.
..
...

ひねり出した数式がこちら。


="data-"&IF(LEN(COUNTA($A$1:A10)) < 3, REPT(0, 3 - LEN(COUNTA($A$1:A10)) ),"")&COUNTA($A$1:A10)

見やすくしてみる

="data-"
&
IF(
    LEN(COUNTA($A$1:A10)) < 3,
    REPT(0, 3 - LEN(COUNTA($A$1:A10)) ),
    ""
)
&
COUNTA($A$1:A10)

IFの条件としてCOUNTAで上にある中身入りのセル数をカウントして、
3桁より少なかったらREPTで0を (3 - カウント文字列数)だけ並べる
3桁以上になったらなにもしない。
&は文字列連結の記号(JavaScriptだと+なアレ)

Googleスプレッドシートの場合、エクセルのようなVBマクロはないが
JavaScriptのApp-Scriptというのが用意されている。のでそれを使えば数式は要らなくなる…
リファレンス見てたら眠くなったので気が向いたら書きます。

Leave a Comment.