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」文字切り取ります
)