• let関数の使い心地

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

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

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

    )


  • 代表:一木伸夫 / Ichiki Nobuo

    プログラマとして4年間会計ソフトの開発を経験。2000年公認会計士試験合格後、中央青山監査法人に入所。大手流通、SIer、公開準備会社等の監査とアドバイスに従事。12年間の監査法人勤務を経て独立。

    所在地

    東京都千代田区九段南1-5-6りそな九段ビル5F KSフロア

    連絡先

    info@jssa.me