「この値は何ですか?」を劇的改善、Excelの数式を見やすく・高速化する新関数「LET」の使い方Tech TIPS

「Microsoft Excel(エクセル)」で複雑な数式を扱っていると、「数式が長過ぎて読みにくい」「同じ計算を何度も繰り返していて非効率だ」と感じることがあるだろう。そうした問題を解決してくれる「LET」関数の使い方をマスターしよう。そこで本Tech TIPSでは、この便利なLET関数の使い方を紹介する。

» 2025年11月26日 05時00分 公開
[小林章彦デジタルアドバンテージ]
「Tech TIPS」のインデックス

連載目次

対象:Excel 2021/2024/365


Excelの数式を見やすく・高速化する新関数「LET」の使い方 Excelの数式を見やすく・高速化する新関数「LET」の使い方
Excelで複雑な数式を扱っていると、「数式が長過ぎて読みにくい」「同じ計算を何度も繰り返していて非効率だ」と感じることがあるだろう。そうした問題を解決してくれる「LET」関数の使い方をマスターしよう。なお画面中の社員名は、「テストデータ・ジェネレータ」で生成したダミーデータである。

 「Microsoft Excel(エクセル)」で複雑な数式を扱っていると、「数式が長過ぎて読みにくい」「同じ計算を何度も繰り返していて非効率だ」と感じることがあるだろう。また、他の人が書いた数式で使われている値の意味が分からず、修正が難しいという問題もよく聞く。こうした問題を解決するのが「LET」関数である。

 LET関数は、Excel 365およびExcel 2021以降で利用可能な関数で、数式内で一時的に「変数」を定義し、利用できるようにするものだ。これにより、数式の読みやすさと処理速度を大幅に向上させることができる。また、繰り返し登場する数式内の計算を「変数」とすることで、計算部分の変更が容易になるというメリットもある。

 そこで本Tech TIPSでは、この便利なLET関数の使い方を紹介しよう。

LET関数の基本的な構文

 LET関数の基本的な構文は以下の通りだ。

=LET(名前1, 値1,[名前2, 値2],……, 計算)

LET関数の基本的な構文

 「名前1」は、次の「値1」に対応した変数名だ。「値1」は変数名に割り当てる値や計算式となる。「名前」と「値」がペアになり、最大126ペアまで定義できる。最後の「計算」は、定義した変数を使う最終的な計算式となる。変数は、このLET関数内のみで有効で、別のLET関数には引き継がれないことに注意してほしい。

 少し具体的な事例で使い方を解説しよう。

 「A2」セルに税抜価格が入力されているとする。この税込価格が5000円以上ならば「送料無料」と表示し、5000円未満ならその「税込価格(計算結果)」をそのまま表示するようなケースを考えてみよう。

 LET関数なしの場合、以下のような数式になる。

=IF(A2*1.1 >= 5000, "送料無料", A2*1.1)

LET関数を使わない判定式

 この数式には、「A1*1.1」という「税込価格」を求める計算が、税込価格が5000円以上かどうかの判定と5000円未満の場合に表示する値として2回登場している。将来、消費税率が変更になった場合、この数式内で2カ所の値の変更が必要になり、場合によっては修正漏れが発生するリスクもある。

 これをLET関数を使って書き直すと以下のようになる。

=LET(税込, A2*1.1, IF(税込 >= 5000, "送料無料", 税込))

LET関数を使った判定式

IF関数を使った判定式でLET関数を使う IF関数を使った判定式でLET関数を使う
IF関数内で使われている計算式(A2*1.1)をLET関数内で「税込」という変数名に割り当てることで、IF関数で何を判定しているのかが分かりやすくなる。

 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+税率),
  税込価格
)

LET関数を使った割引後の税込価格を求める数式
[Alt]+[Enter]キーで数式を改行しておくと見やすくなる。

割引後の税込価格を求める(LET関数を使わない場合) 割引後の税込価格を求める(LET関数を使わない場合)
割引後の税込価格を求める数式では、割引率や税率を値で計算するため、他の人が見ても何を表しているのかが分かりにくい。

割引後の税込価格を求める(LET関数を使った場合) 割引後の税込価格を求める(LET関数を使った場合)
LET関数で「税率」や「割引率」という変数名を使うことで、それぞれの値が示す意味が分かりやすくなる。また、「割引率」が変更になった場合でもどこを修正すべきなのかが一目瞭然で分かる。なお、LET関数を使う場合、画面のように数式バーを広げ、LET関数内で改行([Alt]+[Enter]キー)を入れると数式が見やすくなる。

XLOOKUP関数を分かりやすくする

 XLOOKUP関数は便利だが、引数が何を示すのか分かりにくく、可読性に欠けることがある(XLOOKUP関数については、Tech TIPS「【Excel】もうVLOOKUPには戻れない? 新定番『XLOOKUP』関数の使い方」参照のこと)。LET関数で各引数に意味のある名前を付けることで、数式の意図が明確になる。

=XLOOKUP(E2, A2:A21, B2:B21)

LET関数を使わない場合のXLOOKUP関数

=LET(
  検索値,   E2,
  検索範囲, A2:A21,
  戻り配列, B2:B21,
  結果,     XLOOKUP(検索値, 検索範囲, 戻り配列),
  結果
)

LET関数をXLOOKUP関数と組み合わせて使う

XLOOKUP関数を分かりやすくする(1) XLOOKUP関数を分かりやすくする(1)
XLOOKUP関数では、引数が何を意味するのか分かりにくく、修正する場合などに間違ったセル範囲を選択してしまうというミスも起こりがちだ(それでも、VLOOKUP関数に比べると分かりやすくなっているが)。
XLOOKUP関数を分かりやすくする(2) XLOOKUP関数を分かりやすくする(2)
LET関数を使うと、XLOOKUP関数を使った数式は構文通りで済む。定義した変数を見れば、何を検索して、何の結果を得たいのかがひと目で分かる。

 後から見たときに「何を検索しているか」が分かりやすく、検索範囲や戻り配列の変更が容易になるというメリットがある。

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)

LET関数を使わない場合のIFS関数による条件分岐

 こうした複数条件で分岐する計算の場合、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),
  総合評価, 課長点 + 評価,
  総合評価
)

LET関数を使った場合のIFS関数による条件分岐

IFS関数の条件を再利用する(1) IFS関数の条件を再利用する(1)
IF関数やIFS関数で複数の条件分岐が発生する場合、同じ計算式が数式内で複数回登場することがある。
IFS関数の条件を再利用する(2) 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.

アイティメディアからのお知らせ

スポンサーからのお知らせPR

注目のテーマ

人に頼れない今こそ、本音で語るセキュリティ「モダナイズ」
4AI by @IT - AIを作り、動かし、守り、生かす
Microsoft & Windows最前線2025
AI for エンジニアリング
ローコード/ノーコード セントラル by @IT - ITエンジニアがビジネスの中心で活躍する組織へ
Cloud Native Central by @IT - スケーラブルな能力を組織に
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。