低所得の青色申告個人事業主のブログ

開業から経験で得た情報をお知らせしていきたいと思います。

= グローバル ナビゲーション =

同じ式を繰り返し記述することを防げる LET関数


[ スポンサー リンク ]

Amazonのアソシエイトとして、当メディアは適格販売により収入を得ています

LET関数がリリースされました。

待ち望まれていた関数ですが、Microsoft365限定のため互換性に問題がありますが、使い方を解説します。

 

同じ式を繰り返さなくてはならないケース

例えば、以下のように得意先コード得意先名称の表があるとします。

  A B C D E
1 得意先CD 得意先名      
2 C0001HK 北海道商会      
3 C0002FK オフィス福島      
4 C0003TC 栃木屋   C0005TY 上様
5 C0004SZ スーパー静岡      
6 C0005TY        
7 C0006SG パティスリー滋賀      

D4セルにコードを入力し、コードに対応する名称E4セルに表示するようにします。

E4セルに基本的に「=VLOOKUP(D4,$A$2:$B$7,2,FALSE)」と式をセットしたいのですが、以下のように値がセットされるようにしたいです。

コードがないものはエラーを返しますが、空欄表示したいとします。

また、コードはあるものの名称登録がないケースは本来空欄で返ってきますが、「上様」と表示したいとします。

その場合にE4セルにセットする式は「=IFERROR(IF(TRIM(VLOOKUP(D4,$A$2:$B$7,2,FALSE))="","上様",VLOOKUP(D4,$A$2:$B$7,2,FALSE) ), "") 」となります。

ご覧の通り、同じ式が繰り返されています。このようなケースはよくあり、自作Excel仕訳帳でもありました。

account-it-dentist.hatenablog.com

しかし、同じ式を繰り返すことは、できることならやりたくないです。

同じ式が繰り返されることで、Excel内で同じ処理が繰り返されることで無駄に時間がかかります

また、修正が必要な時に同じ修正を2か所する必要があるためミスを誘発しやすく式が複雑に見えるため、式から処理内容を理解するうえでのデメリットになります。

同じ式を繰り返すことを避けるために使えるのがLET関数です。

 

LET関数の引数と返す値

LET関数」の形式を確認します。

関数

= LET ( 名前1, 値1 , 名前2, 値2 , ・・・・・, 計算式 )

プログラムコーディングがわかる方には理解しやすいのですが、具体的に式を作って説明します。

= LET ( X, 2, Y, 3, X + Y ) 」と式をセットします。

  • 名前1 = X
  • 値1 = 2
  • 名前2 = Y
  • 値2 = 3
  • 計算式 = X + Y

プログラムが分かる方は「名前」は「変数」のことだと理解してください。

名前」と「」の関係は、「名前」に「値」を代入すると理解してください。

つまり、

  1. X <-- 2」( X に 2 を代入する)
  2. Y <-- 3」( Y に 3 を代入する)

ということです。

LET関数は「計算式」の算出結果を返します。

つまり、セットした式は = X + Y = 2 + 3 = 5 で「5」を返します。

この場合、には具体的な数値を指定しましたが、式をセットすることも可能です。

冒頭で述べたような、同じ式を繰り返すことを避けるための使い方を次にみていきます。

 

同じ式の繰り返しを避けるために

上記でE4セルにセットする式は「 =IFERROR(IF(TRIM(VLOOKUP(D4,$A$2:$B$7,2,FALSE))="","上様",VLOOKUP(D4,$A$2:$B$7,2,FALSE) ), "") 」でした。

ここで、繰り返されていた「VLOOKUP(D4,$A$2:$B$7,2,FALSE)」を「srchCD」と名付けることにします。

設定された式をLET関数を使って書き直すと

= LET ( srchCD, VLOOKUP ( D4, $A$2:$B$7, 2, FALSE ), IFERROR (  IF ( TRIM(srchCD) = "", "上様", srchCD ), "" ) )

となります。

これにより、同じ処理が無駄に繰り返されることはなくなります

読み慣れるまでは複雑に見えるかもしれませんが、可読性も上がります

読むときは、最後の計算式から読みます。

IFERROR( IF( TRIM(srchCD)="", "上様", srchCD ), "" ) )

これを読めば、

原則「srchCD」を返すが、これが空白なら「上様」と返す。エラーのときは空白で返す。

となることが分かると思います。

そのあとで、「srchCD」とは VLOOKUP関数 で取得した値だとみていけば処理内容が理解できます。

 

 

かなり使い勝手がいい関数ではあると思いますが、冒頭で述べた通り互換性に問題がありますので、使用するときは注意しましょう。

 


ご質問は下の 「コメントを書く」 からお願いします。

ExcelVBA全般に関わる質問で、比較的簡単にお答えできるものはできる限り回答したいと思います。

回答を公開でなくメールでやり取りしたいという場合は、その旨記載していただければ非公開で回答することも可能です。

有償での作業依頼は非公開にしますので、条件等をお知らせください。