LET関数(Excel 365/2021以降)とは、数式の中で一時的に名前を付けて、計算結果を保管する機能です。これを使うことで、数式が短く、速く、そして驚くほど読みやすくなります。
LET関数とは
LET関数は、数式の中で独自の変数(名前)と、その変数が持つ値や計算式を定義します。そして、最後にその定義した変数を使って、最終的な計算を実行します。簡単に言えば、数式に名前を付けてその名前を使って計算できるということです。たとえば、税込価格の計算も「A1+A1*0.1」よりも、日本語で「価格+税額」と記載されている方がわかりやすいと思います。
LET関数の構文は、名前と値のペアを定義し、最後に計算式を記述する形になっています。
| LET(名前1,値1,名前2,値2,…,最終的な計算式) |
|---|
| 名前とその名前が持つ値をセットで定義する(複数のペアを設定可能)。 最終的な計算式で、定義した名前を使って、最終的な結果を導き出す計算式を記述。 |
LET関数を使う3つのメリット
LET関数を使うことで、3つの大きなメリットがあります。
可読性の向上(読みやすさ)
複雑な計算を「名前」で表現できるため、数式が格段に読みやすくなります。Excelでは作成者のみが計算を理解して、他の人が見ると何を計算しているか分からないといったことがあります。しかし、LET関数を使って日本語で数式を書けば、他の人が見てもわかりやすいです。
計算速度の向上(処理の速さ)
通常、長い数式では、同じ計算が何度も実行されます。LET関数は、その計算結果を変数に一度だけ保存するため、再計算の負荷が減り、処理速度が向上します。
数式の短縮(シンプルさ)
何度も登場する長い計算式を短い名前に置き換えられるため、数式全体の文字数が短くなります。見やすさだけでなく、数式の入力ミスを防ぐことにもつながります。
LET関数を使わず、計算結果を一つずつ別のセルに書き出して計算する方法もありますが、LET関数を使うことで、この中間計算のセルを作成する手間を省き、かつ数式の可読性とメンテナンス性を両立できるという大きなメリットがあります。
LET関数の基本的な使い方
実際に簡単な例を使って、LET関数の動作を見てみましょう。
単価100円の3個の合計に、消費税10%を掛けた税込価格を計算をLET関数を使わない場合と使う場合に分けて行います。

LET関数を使わない場合
LET関数を使わず、計算する場合、以下のように数式を入力します。「A2*B2」で価格を計算し、「A2*B2*0.1」で税額を計算。そして、価格と税額を足し合わせています。
=A2*B2+A2*B2*0.1

そうすると、税込価格330円が正しく計算されます。

LET関数を使う場合
次にLET関数を使った計算方法です。LET関数を挿入し、まず、「金額」という名前を定義し、値として A2*B2 を設定します。次に、税率という名前を定義し、値として 0.1 を設定します。最終計算式で、定義した名前を使います。
=LET(金額,A2*B2,税率,0.1,金額+金額*税率)

こちらの方法でも、税込価格330円が正しく計算されます。

金額という計算結果は一度だけ計算され、再利用されます。数式の意味も「金額と、それに税率を掛けた額を足す」と明確になり、可読性が向上しました。
活用例1:割引と消費税の連続計算
たとえば、商品の割引後の税込価格を計算する場合を考えます。各商品に対して5%の割引を行った上で、消費税10%を加える場合を考えます。

LET関数を使わない場合
LET関数を使わない場合は、セルB3の価格に割引率「1-$B$9(5%)」を掛けて割引後の価格を計算します。さらに税込金額を計算するため、「1.1」を掛けます。
=B3*(1-$B$9)*1.1

これで正しく割引後の税込価格を計算することができます。

下に数式をコピーすれば、他の商品も同じように割引後の税込価格を計算することができます。

LET関数を使う場合
今度は、LET関数を使ってみます。LET関数を挿入し、割引後の価格を「割引後」と定義し、B3*(1-$B$9)と数式を入力します。さらに税込後の計算を行うため、「消費税」を1.1と定義します。最終計算式で、この名前を使って「割引後*消費税」と入力します。
=LET(割引後,B3*(1-$B$9),消費税,1.1,割引後*消費税)

これで正しく割引後の税込価格を計算することができます。

下に数式をコピーすれば、他の商品も同じように割引後の税込価格を計算することができます。

このようにLET関数を使えば、日本語を使って数式を表現することができます。
活用例2:VLOOKUP関数を使った価格の検索
次はもう少し複雑な数式に活用してみます。以下のルールに基づき、指定した商品の割引後税込価格を計算します。
- VLOOKUP関数を使って、商品名から金額を検索
- その金額が10万円以上であれば、5%の割引を適用
- その後、消費税10%を加える

LET関数を使わない場合
LET関数を使用しない場合は、以下3つの構造で数式を入力します。
- IF関数を使って金額が10万円以上かどうかの条件分岐を行う。VLOOKUP関数でセルE3の商品名から金額を検索し、この金額が10万円以上という条件分岐を行う
- 条件が真の場合、つまり価格が10万円以上であれば、割引率と消費税率をかけて計算
- 条件が偽の場合、つまり価格が10万円未満の場合はVLOOKUP関数で検索した価格に消費税を加える
=IF(VLOOKUP(E3,$A$3:$B$7,2,FALSE)>=100000,VLOOKUP(E3,$A$3:$B$7,2,FALSE)*(1-$B$9)*1.1,VLOOKUP(E3,$A$3:$B$7,2,FALSE)*1.1)

これで、指定した商品の税込価格を計算することができます。

ただし、LET関数を使わない場合は、VLOOKUP関数が繰り返され、少し数式が長くなってしまいます。
LET関数を使う場合
今度はLET関数を使用します。LET関数を挿入し、「価格」という名前に、VLOOKUP関数で価格を検索する数式を定義します。最終計算式で、この名前を使って、10万円以上とそれ以外の場合の条件分岐を行い、割引率・消費税を適用します。
=LET(価格,VLOOKUP(E3,$A$3:$B$7,2,FALSE),IF(価格>=100000,価格*(1-$B$9)*1.1,価格*1.1))

これで、指定した商品の税込価格を計算することができます。

商品名を変えると、自動的に10万円以上かを判定し、割引後の税込価格を計算することができます。

このようにLET関数を使うことで、長いVLOOKUP関数の数式を繰り返すことなくシンプルに表現することができます。
活用例3:残業時間の判定と給与計算
次は労働時間から残業時間を計算し、残業代を基本給に加えるような計算を考えます。基本給が1万円、所定労働時間が8時間、残業時の時給が1,500円とします。

LET関数を使わない場合
LET関数を使わない場合は、基本給に残業代を加えますが、残業代の有無をIF関数を使って条件分岐します。実働時間が所定労働時間を上回る場合は、実働時間-所定労働時間で残業時間を計算します。それ以外は、残業時間を0とします。次に時給計算のため24時間を掛けて時給を掛けます。
=$B$9+(IF(B3>$B$10,B3-$B$10,0)*24*$B$11)

これで、残業の有無を考慮した給与を計算することができます。

下に数式をコピーすれば、他の日も正しく給与を計算することができます。

LET関数を使う場合
LET関数を使用する場合は、LET関数を挿入し、「所定」という名前で所定労働時間、実働という名前で実働時間を参照します。
次に「残業時間」という名前で残業時間の計算を行います。IF関数を使って実働時間が所定労働時間を上回る場合は、実働時間-所定労働時間で残業時間を計算します。この際、LET関数で名前を定義しているので、この名前を使って数式を記述することができます。
最終計算式で、日給+残業時間×24時間×残業時給とします。
=LET(所定,$B$10,実働,B3,残業時間,IF(実働>所定,実働-所定,0),$B$9+残業時間*24*$B$11)

これで、残業の有無を考慮した給与を計算することができます。

下に数式をコピーすれば、他の日も正しく給与を計算することができます。

長いIF関数の計算ロジックが、残業時間という分かりやすい名前に集約されるため、数式全体が読みやすくなります。特に、IF文の入れ子(ネスト)が深くなった場合には、LET関数は効果的です。
まとめ
LET関数は、数式内で名前(変数)を定義し、計算結果を一時保管・再利用することで、数式を短く、速くする関数です。LET関数を使うことで、可読性の向上、計算速度の向上、数式の短縮などを期待できます。是非、複雑な数式に活用してみてください。



コメント