let関数の使い心地


2020-11-28

先日のエクセル研修で、受講生の方から都道府県の抽出方法について質問を受けました。

ネットを検索すれば出てくる話なのですが、分かりやすく説明するために、

・FIND関数で「県」を検索する列を作成する

・FIND関数の列が数字だったらLEFT関数で数字分だけ切り取る

・FIND関数の列が数字でなかったらLEFT関数で3文字切り取る

という方法を実演しました。


説明しながら、これはLET関数が使えるのではないか、と思いつきやってみたところ、想像どおりプログラマー垂涎の関数だったのでご報告します。

LET関数とスピルを組み合わせると、ほとんどプログラミングの世界が実現できます。

今回作成した数式はこんな感じです。

=LET(data,B:B&C:C,slice,FILTER(data,B:B<>""),n,FIND("県",slice),num,IF(ISNUMBER(n),n,3),LEFT(slice,num))

実験のため、少し冗長にしています。

長い数式ですが、構造は単純なので、慣れれば分かりやすそうです。

詳細はファイルダウンロードしてご利用ください。


解説は以下のとおりです。

=LET(

    data,B:B&C:C, ← B列とC列を結合して「data」という名前にします

    slice,FILTER(data,B:B<>""), ← 「data」から空白行を取り除き「slice」とします

    n,FIND("県",slice), ← 「slice」の各行から「県」を探し、その位置を「n」とします

    num,IF(ISNUMBER(n),n,3), ← nが数字ならn、そうでなければ3を「num」とします

    LEFT(slice,num) ← 「slice」の左から「num」文字切り取ります

)