「この値は何ですか?」を劇的改善、Excelの数式を見やすく・高速化する新関数「LET」の使い方:Tech TIPS
「Microsoft Excel(エクセル)」で複雑な数式を扱っていると、「数式が長過ぎて読みにくい」「同じ計算を何度も繰り返していて非効率だ」と感じることがあるだろう。そうした問題を解決してくれる「LET」関数の使い方をマスターしよう。そこで本Tech TIPSでは、この便利なLET関数の使い方を紹介する。
対象:Excel 2021/2024/365
Excelの数式を見やすく・高速化する新関数「LET」の使い方
Excelで複雑な数式を扱っていると、「数式が長過ぎて読みにくい」「同じ計算を何度も繰り返していて非効率だ」と感じることがあるだろう。そうした問題を解決してくれる「LET」関数の使い方をマスターしよう。なお画面中の社員名は、「テストデータ・ジェネレータ」で生成したダミーデータである。
「Microsoft Excel(エクセル)」で複雑な数式を扱っていると、「数式が長過ぎて読みにくい」「同じ計算を何度も繰り返していて非効率だ」と感じることがあるだろう。また、他の人が書いた数式で使われている値の意味が分からず、修正が難しいという問題もよく聞く。こうした問題を解決するのが「LET」関数である。
LET関数は、Excel 365およびExcel 2021以降で利用可能な関数で、数式内で一時的に「変数」を定義し、利用できるようにするものだ。これにより、数式の読みやすさと処理速度を大幅に向上させることができる。また、繰り返し登場する数式内の計算を「変数」とすることで、計算部分の変更が容易になるというメリットもある。
そこで本Tech TIPSでは、この便利なLET関数の使い方を紹介しよう。
LET関数の基本的な構文
LET関数の基本的な構文は以下の通りだ。
=LET(名前1, 値1,[名前2, 値2],……, 計算)
「名前1」は、次の「値1」に対応した変数名だ。「値1」は変数名に割り当てる値や計算式となる。「名前」と「値」がペアになり、最大126ペアまで定義できる。最後の「計算」は、定義した変数を使う最終的な計算式となる。変数は、このLET関数内のみで有効で、別のLET関数には引き継がれないことに注意してほしい。
少し具体的な事例で使い方を解説しよう。
「A2」セルに税抜価格が入力されているとする。この税込価格が5000円以上ならば「送料無料」と表示し、5000円未満ならその「税込価格(計算結果)」をそのまま表示するようなケースを考えてみよう。
LET関数なしの場合、以下のような数式になる。
=IF(A2*1.1 >= 5000, "送料無料", A2*1.1)
この数式には、「A1*1.1」という「税込価格」を求める計算が、税込価格が5000円以上かどうかの判定と5000円未満の場合に表示する値として2回登場している。将来、消費税率が変更になった場合、この数式内で2カ所の値の変更が必要になり、場合によっては修正漏れが発生するリスクもある。
これをLET関数を使って書き直すと以下のようになる。
=LET(税込, A2*1.1, IF(税込 >= 5000, "送料無料", 税込))
LET関数を使うと数式が長くなり、複雑になったように見えるが、「A1*1.1」という計算式に対して「税込」という分かりやすい名前を付けただけだ。IF関数の中では「税込」という名前で、もし5000円以上なら「送料無料」、そうでなければ「税込」を結果として出力するとしている。
計算が1回で済むため処理が速くなり、数式も「税込」という言葉を使うことで読みやすくなっている。また、税率が変更された場合も、「A1*1.1」の1カ所を直すだけで済む。
LET関数の具体的な使用方法
もう少し具体的な例でLET関数の使い方を見ていこう。
割引後の税込価格を求める
「A2」セルに入力されている税抜価格を、割引(20%割引)して、それに消費税(10%)を適用した税込価格を計算するとしよう。
LET関数を使わない場合、数式は以下のようになる。それほど複雑なものではないため、これで十分という人もいるだろう。ただ、「0.2」や「0.1」が何を示す値なのか分かりにくい。他の人が見た場合は、これらの値が何を意味するのか理解するのに時間がかかることだろう。
=A2*(1-0.2)*(1+0.1)
一方、LET関数を使えば、以下のようになり、税率や割引率がひと目で分かる。割引率を変更する場合も、「割引率」と定義している値を変更すればよく、メンテナンス性が高いことが分かる。
=LET(
税率, 0.1,
割引率, 0.2,
割引後, A2*(1-割引率),
税込価格, 割引後*(1+税率),
税込価格
)
[Alt]+[Enter]キーで数式を改行しておくと見やすくなる。
割引後の税込価格を求める(LET関数を使った場合)
LET関数で「税率」や「割引率」という変数名を使うことで、それぞれの値が示す意味が分かりやすくなる。また、「割引率」が変更になった場合でもどこを修正すべきなのかが一目瞭然で分かる。なお、LET関数を使う場合、画面のように数式バーを広げ、LET関数内で改行([Alt]+[Enter]キー)を入れると数式が見やすくなる。
XLOOKUP関数を分かりやすくする
XLOOKUP関数は便利だが、引数が何を示すのか分かりにくく、可読性に欠けることがある(XLOOKUP関数については、Tech TIPS「【Excel】もうVLOOKUPには戻れない? 新定番『XLOOKUP』関数の使い方」参照のこと)。LET関数で各引数に意味のある名前を付けることで、数式の意図が明確になる。
=XLOOKUP(E2, A2:A21, B2:B21)
=LET(
検索値, E2,
検索範囲, A2:A21,
戻り配列, B2:B21,
結果, XLOOKUP(検索値, 検索範囲, 戻り配列),
結果
)
XLOOKUP関数を分かりやすくする(1)
XLOOKUP関数では、引数が何を意味するのか分かりにくく、修正する場合などに間違ったセル範囲を選択してしまうというミスも起こりがちだ(それでも、VLOOKUP関数に比べると分かりやすくなっているが)。
後から見たときに「何を検索しているか」が分かりやすく、検索範囲や戻り配列の変更が容易になるというメリットがある。
IFS関数の条件を再利用する
達成率などの計算結果をIFS関数で条件分岐する場合、LET関数を使うと数式が見やすくなる。
例えば、人事評価において、目標売上に対する実際の売上の割合によって評価を加点するようなケースを考えてみよう。「B2」セルには「課長点」として課長の評価、「C2」セルには「目標売上」、「D2」には実際の「売上」が入力されているとする。「D2/C2」で計算される「達成率」が100%以上の場合は「2」、80%から100%未満は「1」、50%から80%未満は「0」、50%未満は「-1」を与えるとする。
=B2+IFS(D2/C2 >=1,2, D2/C2>=0.8, 1, D2/C2 >= 0.5, 0,TRUE,-1)
こうした複数条件で分岐する計算の場合、Tech TIPS「Excel関数で限界を感じたら? 生成AIを使って作る『ユーザー定義関数』で複雑な計算を一発解決」で取り上げているユーザー定義関数を使うという方法もある。しかし、ユーザー定義関数では使用時にマクロを有効にする必要があり、少しハードルが高い面もある。その点、LET関数はExcel 365/2021以降の標準関数なので、セルに入力する数式が少し長くなるという欠点はあるものの、使う上での障害は少ない。
そこで、上記の数式をLET関数を使って書き直してみると、以下のようになる。「達成率」はIFS関数の中で3回登場するが、LET関数内で「売上 / 目標」を「達成率」と定義した時点で1回計算されるだけになり、同じ計算は実行されない。1つの数式ではパフォーマンスの向上は微々たるものだが、これが1000人分、1万人分となるとばかにできない計算量の差になってくる。
またそれぞれのセルに入った値が何を意味するのかが分かりやすく、メンテナンス性が高いことも分かるだろう。
=LET(
課長点, B2,
目標売上, C2,
売上, D2,
達成率, 売上 / 目標売上,
評価, IFS(達成率 >= 1, 2, 達成率 >= 0.8, 1, 達成率 >=0.5, 0, TRUE, -1),
総合評価, 課長点 + 評価,
総合評価
)
IFS関数の条件を再利用する(2)
LET関数を使って計算式を変数にしてみた。特に「達成率」に注目してほしい。条件を変更する際もこの1カ所で済み、また計算自体も1回で済むためパフォーマンス向上につながる。
LET関数のメリット
LET関数を使うメリットをまとめておこう。
1.可読性の向上
参照先のセルや数式に意味のある名前を付けることで、後から見たときに何をしているか理解しやすくなる。特にチームで作業する場合やExcelファイルを共有する場合には重要だ。
2.計算効率の改善
IF関数やIFS関数を使って条件分岐する場合、同じ計算が複数回登場することがある。このような同じ計算を複数実行する場合、LET関数で一度だけ計算して結果を再利用することで、計算時間が短縮される。特に大量のデータを扱う場合は顕著な差となる。
3.メンテナンス性の向上
数式の一部を変更したい場合、LET関数で定義した変数を修正するだけで済む。従来の数式では複数箇所を修正する必要があり、手間がかかる上、修正忘れなどのミスが発生しがちだ。
4.エラーの減少
セル参照を何度も記述する必要がなくなるため、参照ミスが減少する。また、参照先のセルや数式に名前を付けることで、数式のロジックが明確になり、論理エラーも発見しやすくなる。
5.複雑な計算の分解
段階的な計算が必要な場合、各ステップを変数として定義できるため、デバッグが容易になる。
LET関数は、Excelの数式をより「プログラミング的」に記述できる強力なツールだ。上述のように可読性、効率性、メンテナンス性においてメリットがあり、特に業務で複雑な数式を扱う場面では必須の関数となる。LET関数を取り入れていくことで、誰にでも分かりやすいExcelファイルの作成が可能になるはずだ。
Copyright© Digital Advantage Corp. All Rights Reserved.



