概要
複雑な数式を書いていると、
「IFERROR だらけで読みにくい…」
「途中計算でエラーが出て、後半の計算まで全部巻き込まれる…」
「エラー回避の処理と本来の計算処理が混ざってカオス」
こういう“数式のゴチャつき”を一気に解決してくれるのが LET 関数です。
LET を使うと、
- エラー回避ロジック(IFERROR・分母チェックなど)を最初にまとめて定義
- 後半の計算式は「安全な値」だけを使う
という構造にでき、
数式が読みやすく、壊れにくく、修正しやすくなります。
LET の基本
LET の書式
=LET(
名前1, 値1,
名前2, 値2,
…,
最後の計算式
)
LET のポイントは、
- 途中計算に名前をつけて保存できる
- その名前を後半の計算で何度でも使える
- エラー回避処理を一箇所にまとめられる
というところです。
エラー回避ロジックを分離するメリット
1. 数式が短くなる
IFERROR を何度も書かなくて済む。
2. エラー処理が一箇所にまとまる
「どこでエラーを潰しているか」が明確になる。
3. デバッグがしやすい
途中の変数を一時的にセルに貼って確認できる。
4. 修正が簡単
エラー処理のルールを変えたいとき、変数部分だけ直せばよい。
パターン1:分母ゼロ対策を LET にまとめる
分母が 0 のときだけ NA() にする
普通の書き方:
=C2 / D2
D2 が 0 だと #DIV/0! になり、後続の計算も全部エラーになります。
LET で「安全な分母」を作るとこうなります。
=LET(
分子, C2,
分母, D2,
安全分母, IF(分母=0, NA(), 分母),
分子 / 安全分母
)
後半の計算は「安全分母」だけを使うので、
エラーが広がりません。
パターン2:VLOOKUP のエラー処理を一箇所にまとめる
同じ VLOOKUP を何度も使うときに便利
よくある悪い例:
=IFERROR(VLOOKUP(A2, マスタ!A:D, 2, FALSE), 0)
+ IFERROR(VLOOKUP(A2, マスタ!A:D, 3, FALSE), 0)
- IFERROR(VLOOKUP(A2, マスタ!A:D, 4, FALSE), 0)
LET を使うとこうなります。
=LET(
検索2, IFERROR(VLOOKUP(A2, マスタ!A:D, 2, FALSE), 0),
検索3, IFERROR(VLOOKUP(A2, マスタ!A:D, 3, FALSE), 0),
検索4, IFERROR(VLOOKUP(A2, マスタ!A:D, 4, FALSE), 0),
検索2 + 検索3 - 検索4
)
エラー処理は最初の 3 行だけ。
後半はスッキリした計算式になります。
パターン3:途中計算を分離して「どこでエラーか」を切り分ける
長い式を LET で分解してデバッグしやすくする
元の式:
=(B2*C2 + D2) / (E2 - F2)
どこでエラーが出ているか分かりにくい…。
LET で分解:
=LET(
掛け算, B2*C2,
分子, 掛け算 + D2,
分母, E2 - F2,
IF(
OR(ISERROR(掛け算), ISERROR(分子), ISERROR(分母), 分母=0),
NA(),
分子 / 分母
)
)
どの部分がエラーか一目で分かるようになります。
パターン4:複数列で共通のエラー処理を使い回す
安全な単価・数量を共通化
=LET(
安全単価, IFERROR(B2, 0),
安全数量, IFERROR(C2, 0),
売上, 安全単価 * 安全数量,
売上
)
別の列でも同じ「安全単価」「安全数量」を使い回せます。
例題
問題1
C2 ÷ D2 を計算したいが、D2 が 0 のときは NA() を返し、
それ以外は C2/D2 を返す LET 関数の式を書いてください。
=LET(
分子, C2,
分母, D2,
安全分母, IF(分母=0, NA(), 分母),
分子 / 安全分母
)
問題2
A2 をキーに VLOOKUP を 2 回行い、
どちらもエラーなら 0 として扱いたい。
「検索2」「検索3」という名前を使って LET で書いてください。
=LET(
検索2, IFERROR(VLOOKUP(A2, マスタ!A:D, 2, FALSE), 0),
検索3, IFERROR(VLOOKUP(A2, マスタ!A:D, 3, FALSE), 0),
検索2 + 検索3
)
問題3
=(B2*C2 + D2) / (E2 - F2) を LET で分解し、
掛け算・分子・分母という名前をつけ、
分母が 0 またはどこかがエラーなら NA() を返す式を書いてください。
=LET(
掛け算, B2*C2,
分子, 掛け算 + D2,
分母, E2 - F2,
IF(OR(ISERROR(掛け算), ISERROR(分子), ISERROR(分母), 分母=0), NA(), 分子/分母)
)
問題4
B2 に単価、C2 に数量が入っている。
どちらかがエラーなら 0 として扱い、
「安全単価」「安全数量」「売上」という名前を使って LET で売上を返す式を書いてください。
=LET(
安全単価, IFERROR(B2, 0),
安全数量, IFERROR(C2, 0),
売上, 安全単価 * 安全数量,
売上
)
問題5
A2:A20 の中から「正常な値だけ」を抽出し、その平均を取りたい。
LET で「正常データ」という名前を作り、AVERAGE する式を書いてください。
(ヒント:FILTER × NOT(ISERROR))
=LET(
正常データ, FILTER(A2:A20, NOT(ISERROR(A2:A20))),
AVERAGE(正常データ)
)
まとめ
「エラー回避ロジック分離 → LET」の本質は、
- エラー処理(IFERROR・分母チェック)を最初にまとめる
- 後半の計算は“安全な値”だけを使う
- 数式が短く、読みやすく、壊れにくくなる
という点にあります。
まずはこの型を覚えておくと便利です。
=LET(
安全値1, IFERROR(元の計算1, 代替値),
安全値2, IFERROR(元の計算2, 代替値),
…,
最後の計算(安全値を使う)
)
複雑な数式ほど LET の効果は絶大です。
「数式が長くて読めない」「エラーが連鎖する」
そんなときこそ LET を使って“ロジック分離”してみてください。
