Excel関数 逆引き集 | エラー回避ロジック分離 → LET

Excel
スポンサーリンク

概要

複雑な数式を書いていると、
「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 を使って“ロジック分離”してみてください。

タイトルとURLをコピーしました