Googleスプレッドシート: 部分的連番

Googleスプレッドシートにおいて,オートフィルでは連番にできない文字列を連番にする方法について紹介する.

動機

今,文字列"1-NUM"を,"2-NUM","3-NUM",……,のように連番にしたい.しかし,スプレッドシートでは,連番にしたい数字の後に別の文字列が続く文字列を,オートフィルによって連番にすることができない.例えば,"3-NUM"までの3つを入力してオートフィルを試すと,その3つの文字列が繰り返されてしまう.

1-NUM
2-NUM
3-NUM
1-NUM
2-NUM
3-NUM
1-NUM
2-NUM

上3行(灰色部)をオートフィルした結果

今回は,この問題を解消する.

解消

ここでは,セルA1に入力した文字列"1-NUM"を,同一の列(縦方向)に数字のみ連番にする.

セルA2に次を入力し,あとはセルA2を列Aに渡ってオートフィルする:
=REGEXREPLACE(A1,"\D","") +1 & "-NUM"

1-NUM
2-NUM
3-NUM
4-NUM
5-NUM
6-NUM
7-NUM
8-NUM

セルA2(灰色部)をオートフィルした結果

解説

まず,REGEXREPLACE関数を使い,文字列"1-NUM"の数字のみを取り出す.構文は,
REGEXREPLACE(テキスト, 正規表現, 置換)
である.非数字の正規表現\Dである.そこで,(仮として)セルA2に
=REGEXREPLACE(A1, "\D", "")
と入力する.これで,セルA1の文字列のうち非数字のすべてが空列で置換され,数字"1"のみが残る.これに+1すれば,
=REGEXREPLACE(A1, "\D", "") +1
で,A2にあるべき番号"2"を得られる.あとは,文字列"-NUM"を結合し,
=REGEXREPLACE(A1, "\D", "") +1 & "-NUM"
で,A2にあるべき文字列"2-NUM"が出力された.これでオートフィルが機能する.

参照

スプレッドシートで用いる各正規表現(RE2正規表現)は,次を参照: https://github.com/google/re2/blob/main/doc/syntax.txt