

LETという単語から、ビートルズのLet it be(なるようになるさ)が頭の中に流れてきたアナタ!! 相当にお疲れですねぇ。
それ以前に、職場で年齢を隠しても、好きな楽曲で世代がバレますね。
さて、今回はLet it beではなく、LET関数のお話。
2020年11月にリリースされたMicrosoft 365/Excel 2021用の新関数であるLETは、「普段づかい」する機能でないかもしれませんが、別の意味(後述)で、とても役に立つ関数です。
この記事では、LET関数がどのように使われ、どんな特長があるのかを解説します。
LET関数は、Excel数式内で変数を定義できる関数
まず、この関数に使われるLETという単語の意味は、Let it be(なるようになるさ)とは関係ありません。
英和辞典でLETという単語の意味を引くと、まず「させる、させてやる」、「許可する」などの意味があげられますが、数学用語で「仮に~としよう(代入しよう)」という意味も持つのです。
(例)Let x = 3, y = 2.( xを3、yを2としましょう)
つまりLETは、Excelの数式内で、変数を定義して、複雑な計算式の可読性を高めてくれるはたらきをする関数なのです。
基本構文は
LET(名前1, 値1, [名前2, 値2, …], 式)
名前=任意の変数名
値=その変数に代入する値や式
式=実際に返したい計算式
で、名前と値の組み合わせは、同一構文内で最大126個まで定義することができます。
ごくシンプルな使い方としては、
=LET(x,3,y,2,x+y)
「x=3、y=2として、x + y の計算結果(5)を返す」というような例をあげることができます。
実務上の活用事例としては、たとえばレシートや領収書をExcelで作成する時に、複数の消費税率(標準税率/軽減税率)を分岐させるのに使用すると便利ですね。


ん? 便利なのかなぁ?
上図では、F列に消費税率を分岐させて、正しい税額を加算した結果を返すLET関数式を入力しました。
しかし、その構文は次の通り。
=LET(keigen,0.08,hyoujun,0.1,AppliedRate,IF(B2="軽減",keigen,hyoujun), PriceIncdTax,ROUND(E2+E2*AppliedRate,0),PriceIncdTax)
単に標準税率と軽減税率を見きわめるだけだったら、わざわざこの面倒くさい構文を書かなくても、IF関数1つで2分岐させることができますよね。
この例はシンプルすぎて、わざわざLET関数を使うまでもない事例です。
しかし、たとえば図中の「カツ丼」を、もし1点は店内飲食で標準税率(10%)、もう1点はお土産用持ち帰りで軽減税率(8%)で計算するには、条件をどのように分岐させればいいですか?
それ以外にも分岐条件をふやしていくと、条件分岐のIF関数は、あっというまにIF(IF(IF…)))と入れ子の嵐になって、第三者が判別しづらい資料に仕上がります。
その資料を、同僚や後輩、後日の自分( = 記憶上は赤の他人)に渡しても、「ハテ、この計算式なんだっけ?」となり、さらには「これだからExcelで保存資料を作ると、困るんだよなぁ」という話に、飛躍しかねません。
そのような事態を避けるため、LET関数の構文に、少し手を加えてみてはいかがでしょうか?
LET関数は、セル内改行で見やすくすると、条件分岐プログラミングの入口であることがわかります
Windowsなら[Alt]キーを押しながら[Enter]で、セル内改行ができます。
先の長文LET関数をセル内で改行してみると、下記のようになります。


セル内で折り返しても、ひと続きの関数式である限り、返される結果は変わりません。長い関数式は、意味ある”かたまり”で改行しておくと、第三者でもその意味を理解しやすくなります。
この例の場合、関数式内で4つの変数を定義し、最終的にはPriceIncdTaxという変数の値を返す計算をしています。
つまり、
=LET( keigen,0.08, hyoujun,0.1, AppliedRate,IF(B2=”軽減”,keigen,hyoujun), PriceIncdTax,ROUND(E2+E2*AppliedRate,0), PriceIncdTax ) | =次の変数操作をさせる( 変数keigenを0.08とする 変数hyoujunを0.1とする 変数AppliedRateには、もしセルB2値が”軽減”であればkeigenを、そうでなければhyoujunを代入する 変数PriceIncdTaxには、Round(E2+E2*AppliedRate,0)の結果を代入する 関数式の返り値として、変数PriceIncdTaxの数値を表示する ) |
という操作が、ひとつの関数内で行われているということです。
ここで、たとえ”Hello, World”表示プログラムのような入門レベルでも、ご自身でVBAなどのコードを書いてみたことがある人だったら、気がつくのではないでしょうか?
これは、プログラミング学習を深めていく上で基礎的、かつ非常に重要な機能である”変数による条件分岐”モデルを関数化したものなのです。
したがって、単に軽減/標準税率を2分岐判定させるだけでは、コードを書く手間ばかりが増しますが、分岐が複雑になればなるほど、正確に、明示的に条件切り分けをしてくれる、高度な関数なのです。
もし社内に、IFだらけ、IFSだらけの業務資料があったら、それを「どうやってLET関数に置きかえられるか?」を、一度考えてみてはいかがでしょうか?
関数式がスッキリして可読性が上がり、バグが出る可能性が減るばかりでなく、ちょっとした”プログラミング脳”の訓練にもつながりますよ!!
まとめ;Excel内での複雑な条件分岐も、VBAコードを書かずにLET関数でなんとかなるさ!?
冒頭で、”使用頻度は高くないかもしれないが、役に立つ”と言った理由が、お分かりいただけたでしょうか?
生成AIの登場以降、VBAやPythonをはじめとするプログラミング・コードは「生成AIに書かせればよい」的な風潮もありますが、「自分でコードを読み書きできる上でAIに任せる」のと、「何もわからず任せきりにする」のとでは、プログラムの精度も、完成までの所要時間も全然ちがいます。
せっかくですから、セル内でコードを書かずに変数を定義し、複雑な条件分岐に活用できるLETを使いこなして、ご自身のプログラミング脳をすこし鍛えてみてはいかがでしょうか。



同僚、後輩や未来の自分に対して、「資料再現に行き詰まっても、”なんとかなるさ”」と励ましてあげられる、頼もしいスキルになるかもしれませんよ!?





