なんでもエクセル(Nandemo Excel)

何でもエクセルでやってしまう そこのあなた。ようこそ

数式/関数:カタカナをひらがなに変換する

以前にクエリでやったものの数式版。カタカナをひらがなに変換する方法。

手入力された文字列の場合、ふりがなを読み込めばいいだけなので、

A1のふりがなの設定を「ひらがな」にしてから
=PHONETIC(A1)

とすればいい。ただし実際には漢字が混じっている場合や、何かから読み込まれた情報でふりがながない場合もあるので、単純にはいかないことも多い。

こういう時に便利なのが WebAPI。ExcelAPIを使わせてもらうと、

=WEBSERVICE("https://api.excelapi.org/language/kana-hira?input="&ENCODEURL(A1))

こうなる。ただしこの方法は再計算の度に通信が必要になるので計算が重くなりやすい。基本的には大量のデータに対して使うものではない。

単独の数式でやろうと思ったら、ただの配列数式では厳しい。ひとまずここからは MAP関数が使える前提で進めるので悪しからず。

もちろんスピルに対応しているなら、セル範囲を指定して計算できないと意味がないので、それも含めて考える。

=LET(r,A1:A10,カナ,"ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲン",かな,"ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをん",MAP(r,LAMBDA(rr,IFERROR(CONCAT(MAP(MID(rr,SEQUENCE(LEN(rr)),1),LAMBDA(a,IFERROR(MID(かな,FIND(a,カナ),1),a)))),""))))

これで。「ひらがな→カタカナ」の変換の場合は「カナ」と「かな」を反対にすればいい。

何とも長ったらしいけど、名前の定義で「カナ」と「かな」を名前定義しておけば、かなり整理できる。

名前:カナ
参照範囲:="ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲン"
名前:かな
参照範囲:="ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをん"

としておいて、

=LET(
    r,A1:A5,
    m,LAMBDA(a,IFERROR(MID(かな,FIND(a,カナ),1),a)),
    xMAP,LAMBDA(r,MAP(MID(r,SEQUENCE(LEN(r)),1),m)),
    MAP(r,LAMBDA(r,IFERROR(CONCAT(xMAP(r)),"")))
)

こんな感じ。