Excel関数 逆引き集 | 条件の途中結果を確認 → LET

Excel VBA Excel
スポンサーリンク

概要

複雑な条件式を書いていると、

  • 「この途中の条件、本当に TRUE / FALSE 合ってる?」
  • 「どこで想定と違う判定になっているのか分からない」
  • 「分解して確認したいけど、セルを増やしたくない」

こういう“途中結果を確認したい欲”が出てきます。

そこで役に立つのが LET 関数で条件に名前を付けて、その途中結果だけを一時的に返してみる というテクニックです。
LET は“変数を定義する関数”ですが、「途中結果の確認」にも非常に向いています。


LET の基本おさらい

LET の形と「最後だけ返す」という性質

LET の基本形はこうでした。

=LET(名前1, 値1, 名前2, 値2, …, 最後に返す式)

ポイントは、

  • 上から順に「名前=値」を定義していき
  • 最後の「最後に返す式」だけが、セルの結果として表示される

という性質です。

この「最後だけ返す」おかげで、

  • 本番の完成版では「最終判定」を返す
  • デバッグ中は「特定の途中結果」だけを返す

という切り替えが、とても簡単にできます。


条件を名前にしておいて、途中結果だけ返す

単純な例で流れをつかむ

たとえば、こんな判定式を LET で書いたとします。

前提:

B2:売上
C2:利益
条件:
売上 100,000 以上 → 売上条件
利益 10,000 以上 → 利益条件
両方満たす →「優良」、それ以外「対象外」

通常の LET 版はこうです。

=LET(
  売上条件, B2>=100000,
  利益条件, C2>=10000,
  優良条件, AND(売上条件, 利益条件),
  IF(優良条件, "優良", "対象外")
)

このとき「売上条件だけ TRUE / FALSE を確認したい」と思ったら、
最後の式をこう一時的に変えるだけで OK です。

=LET(
  売上条件, B2>=100000,
  利益条件, C2>=10000,
  優良条件, AND(売上条件, 利益条件),
  売上条件
)

結果として、セルには「売上条件(TRUE / FALSE)」だけが表示されます。

同様に「利益条件」だけ見たければ、

=LET(
  売上条件, B2>=100000,
  利益条件, C2>=10000,
  優良条件, AND(売上条件, 利益条件),
  利益条件
)

「優良条件」だけ見たければ、

=LET(
  売上条件, B2>=100000,
  利益条件, C2>=10000,
  優良条件, AND(売上条件, 利益条件),
  優良条件
)

のように、最後の 1 行だけ書き換えるイメージです。


複雑な条件を分解して、一つずつ検証する

期限切れ × 未処理 × 高重要度の例

前提:

A2:期限日
B2:ステータス(”未処理” / “処理中” / “完了”)
C2:重要度(”高” / “中” / “低”)

条件:

  • 期限日が今日より前 → 期限切れ
  • ステータスが未処理 → 未処理
  • 重要度が高 → 高重要度
  • 3つとも満たせば「要対応」

完成形の LET はこうです。

=LET(
  期限切れ, A2<TODAY(),
  未処理,   B2="未処理",
  高重要度, C2="高",
  要対応条件, AND(期限切れ, 未処理, 高重要度),
  IF(要対応条件, "要対応", "")
)

ここで「どこが想定どおりに判定されていないのか」を確認したい時は、
最後の行を順番に差し替えていきます。

例えば「期限切れだけ確認」する版:

=LET(
  期限切れ, A2<TODAY(),
  未処理,   B2="未処理",
  高重要度, C2="高",
  要対応条件, AND(期限切れ, 未処理, 高重要度),
  期限切れ
)

同様に、

  • 未処理だけ見たい → 最後を 未処理
  • 高重要度だけ見たい → 最後を 高重要度
  • 要対応条件の TRUE / FALSE を見たい → 最後を 要対応条件

と差し替えていくことで、

「どの段階の条件で想定外の FALSE になっているのか」を
一行だけ書き換えながら確認できます。


判定式+計算式の途中結果を確認する

条件も、中間計算も、どちらも見られる

前提:

B2:数量
C2:単価
条件:数量>0 かつ 単価>0 のときだけ 金額=数量×単価
それ以外は空白

通常の LET 版はこうです。

=LET(
  数量,      B2,
  単価,      C2,
  数量有効,  数量>0,
  単価有効,  単価>0,
  有効条件,  AND(数量有効, 単価有効),
  IF(有効条件, 数量*単価, "")
)

「数量有効がどう判定されているかだけ確認したい」なら、最後を 数量有効 に。
「単価有効だけ見たい」なら、最後を 単価有効 に。
「有効条件(両方満たしたか)を見たい」なら、最後を 有効条件 に。

さらに、「数量×単価の計算自体が正しいか」だけ先に見たければ、
こう一時的に変えても構いません。

=LET(
  数量,      B2,
  単価,      C2,
  数量有効,  数量>0,
  単価有効,  単価>0,
  有効条件,  AND(数量有効, 単価有効),
  数量*単価
)

条件判定と数値計算を、それぞれ別々に検証できるのが LET の強みです。


実務での“途中結果チェック用パターン”

一時的に「まとめて表示」するテクニック(考え方)

動的配列対応版 Excel なら、
途中結果を縦に並べて一度にチェックする書き方も考え方としてあります。

例えばイメージとしては:

=LET(
  期限切れ, A2<TODAY(),
  未処理,   B2="未処理",
  高重要度, C2="高",
  要対応条件, AND(期限切れ, 未処理, 高重要度),
  {期限切れ; 未処理; 高重要度; 要対応条件}
)

こうすると 4 行に TRUE / FALSE が並ぶ形になります(環境による)。

ただし、まずは「最後の 1 行を差し替える」単純な方法から慣れるのがおすすめです。
それだけでも「どの条件が想定どおりに動いていないか」が十分追えます。


例題

問題1

B2 に売上、C2 に利益が入っています。
売上>=100,000 を「売上条件」、利益>=10,000 を「利益条件」、
両方を AND で結んだものを「優良条件」として LET で定義し、
最終的に 優良条件 の TRUE / FALSE を返す式を書いてください。

=LET(
  売上条件, B2>=100000,
  利益条件, C2>=10000,
  優良条件, AND(売上条件, 利益条件),
  優良条件
)

問題2

問題1の設定と同じです。
今度は、同じ LET の定義を使いつつ、途中結果である「売上条件」だけを返すようにした式を書いてください。

=LET(
  売上条件, B2>=100000,
  利益条件, C2>=10000,
  優良条件, AND(売上条件, 利益条件),
  売上条件
)

問題3

A2 に期限日、B2 にステータス(”未処理” / “処理中” / “完了”)、C2 に重要度(”高” / “中” / “低”)が入っています。
期限切れ=A2<TODAY()、未処理=B2=”未処理”、高重要度=C2=”高” を LET で定義し、
3つを AND で結んだ「要対応条件」だけを返す式を書いてください。

=LET(
  期限切れ, A2<TODAY(),
  未処理,   B2="未処理",
  高重要度, C2="高",
  要対応条件, AND(期限切れ, 未処理, 高重要度),
  要対応条件
)

問題4

B2 に数量、C2 に単価が入っています。
数量有効=B2>0、単価有効=C2>0、有効条件=AND(数量有効, 単価有効) を LET で定義し、
最終的に IF(有効条件, B2*C2, “”) を返す完成版の式を書いてください。
(途中結果確認用として、有効条件だけを返したい場合は、最後を 有効条件 に差し替えればよい。)

=LET(
  数量有効, B2>0,
  単価有効, C2>0,
  有効条件, AND(数量有効, 単価有効),
  IF(有効条件, B2*C2, "")
)

問題5

A2 に点数が入っています。
S条件=A2>=90、A条件=AND(A2>=70, A2<90)、B条件=AND(A2>=50, A2<70) を LET で定義し、
IFS で S/A/B/それ以外=C を返す式を書いてください。
さらに、デバッグのために B条件 の TRUE / FALSE だけを返すようにしたい場合、最後の行をどう書き換えればよいかも示してください。

=LET(
  S条件, A2>=90,
  A条件, AND(A2>=70, A2<90),
  B条件, AND(A2>=50, A2<70),
  IFS(
    S条件, "S",
    A条件, "A",
    B条件, "B",
    TRUE,  "C"
  )
)

デバッグ用に B条件 だけを返す場合の最後の行は、次のように書き換えます。

=LET(
  S条件, A2>=90,
  A条件, AND(A2>=70, A2<90),
  B条件, AND(A2>=50, A2<70),
  B条件
)

まとめ

「条件の途中結果を確認 → LET」のポイントは、とてもシンプルです。

  1. LET で条件ごとに“名前”を付けておく
  2. 普段は最後に「最終判定」を書く
  3. デバッグするときは、最後の 1 行だけを「見たい途中結果の名前」に差し替える

これだけで、

  • どの条件が TRUE / FALSE になっているか
  • どこで想定外の判定になっているか

を 1 セルの中で順番に追いかけられるようになります。

複雑な条件式ほど、この「途中結果を見ながら組み立てていく」スタイルが効いてきます。
いま手元にある長めの IF・AND・OR の式があれば、
ぜひ LET で条件に名前を付けて、最後の行を差し替えながら“動きを目で見る”練習をしてみてください。

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