スプレッドシートのセル関数で大文字アンスコ区切りを camelCase にする

こんなんいつ使うんだよって話ですが、必要になるシーンがあったんです。
またいつ必要になるともわからないので、一応残しておきます。
Excel でも Google スプレッドシートでもつかえます。

やり方

SAMPLE_TEXTsampleText にするセル関数

=REPLACE(SUBSTITUTE(PROPER(LOWER(${変換元のセル番地})),"_", ""),1,1,LOWER(LEFT(${変換元のセル番地},1)))

たとえば、A1 に書かれたテキストを変換したいならば、

=REPLACE(SUBSTITUTE(PROPER(LOWER(A1)),"_", ""),1,1,LOWER(LEFT(A1,1)))

解説

何をしているのかというと……

  1. LOWER で全部小文字にした参照先のセルの文字列を
  2. PROPER で単語の先頭だけ大文字にしてから
  3. SUBSTITUTE で _ を取り除いて(空文字と入れ替え)
  4. 最後にREPLACEをつかって、最初の1文字目をLEFTで参照先のセルの文字列の1文字目を抽出してからLOWER で小文字にしたものと入れ替える

みたいな感じです。
何となく想像付くと思いますが、最後のREPLACEをやらなければ PascalCase です。

SUBSTITUTE(PROPER(LOWER(A1)),"_", "")

PROPER について

PROPERは 指定した文字列無いの各単語の最初の文字を大文字に変換 というなんともマニアックな関数ですが、こいつは指定した文字列の最初じゃなくて、単語の最初の文字に作用するので、foo_bar_bazFoo_Bar_Baz となります。もちろんスペース区切りでもハイフン区切りでも、混在してても問題ないみたいです。

うまく利用すればほかのケース変換もさくっと出来そうですね。

git log --format=%ct:%s

:add 2023092301.md