(注:このブログはもう更新していません)この日記は私的なものであり所属会社の見解とは無関係です。 GitHub: takahashikzn

[クラウド帳票エンジンDocurain]

ExcelのREVERSE関数的なものを作る

ExcelにREVERSE関数(文字列反転)がありません。

まあ、そもそも何に使うの…?という話はありますが、お客様が必要と言ったら用意しないといけません。 ググるとマクロやユーザー定義関数でやれ、という記事ばかりヒットしますが、何としてでもExcelの数式だけで実現したい。ではどうするか。

答えとしては

TEXTJOIN("", 1, MID([文字列], {32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1}, 1))

となりました。stackoverflowかどこかで見かけたやつ、ほぼそのままです。 SEQUENCE関数が使えるバージョンなら以下でも可。

TEXTJOIN("", 1, MID([文字列], SEQUENCE(1, 999, 999, -1), 1))

見ての通り強引に実現しております。 配列は固定で書かなければならず、可読性を考えると32文字くらいが上限。 一方でSEQUENCEが使えるなら実質上限無し。

更にLAMBDAが使える環境であれば、名前の定義で

REVERSE=LAMBDA(str, TEXTJOIN("", 1, MID(str, SEQUENCE(1, 999, 999, -1), 1)))

とでもやっておけば,後は本当に REVERSE("abc") などとするだけです。