Excel関数 逆引き集 | 論理条件をまとめる → LET

Excel VBA Excel
スポンサーリンク

概要

「この条件とこの条件、あちこちで何度も書いていてぐちゃぐちゃ…」
「IF と AND と OR が入り乱れて、どこが何の判定なのか分からない…」

そんなときに “論理条件をひとまとめにして、名前を付ける” のに使えるのが
LET 関数です。

LET は、数式の中で一時的な「変数(名前付きの値)」を作り、
その名前を使って後ろの計算を書ける関数です。

論理条件(フラグ)に名前を付けて整理すると、

  • 同じ条件を何度も書かなくてよくなる
  • 数式を読んだとき「何をチェックしているか」が一瞬で分かる

というメリットがあります。


LET 関数の基本

LET の書式とイメージ

基本の書式はこうです。

=LET(名前1, 値1, 名前2, 値2, …, 最後に返したい式)
  • 名前1, 名前2 …
    自分で決める“変数名”(論理条件のラベルにできる)
  • 値1, 値2 …
    それぞれの名前に対応する“中身”(条件式や計算式)
  • 最後の式
    上で定義した名前を使って書く「最終的に返したい計算」

イメージとしては、

「〇〇という条件を 条件A と呼ぶことにしよう。
〇〇かつ××という条件を 条件B としよう。
最後に 条件A条件B を使って結果を返そう」

という“ミニプログラム”を 1 セルの中に書く感じです。


単純な論理条件をまとめる基本例

例1:売上と利益、両方の条件を名前にする

前提:

  • B列:売上
  • C列:利益
  • 条件
    • 売上 100,000 以上
    • 利益 10,000 以上
  • 両方を満たせば「優良」、それ以外は「対象外」

従来の IF+AND だけだとこうなります。

=IF(AND(B2>=100000, C2>=10000), "優良", "対象外")

これを LET で「条件に名前を付ける」と、こう書けます。

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

読み方は、

  1. 売上条件 = B2>=100000
  2. 利益条件 = C2>=10000
  3. 優良条件 = 売上条件 かつ 利益条件
  4. 最後に 優良条件 が TRUE なら「優良」、そうでなければ「対象外」

という順番です。

「この IF は何を判定しているのか?」が
日本語の名前で“丸見え”になります。


同じ条件を何度も書かないための LET

例2:期限切れかつ未処理、の複合条件

前提:

  • A列:期限日
  • B列:ステータス(”未処理” / “処理中” / “完了”)
  • 条件
    • 期限日が今日より前 → 期限切れ
    • ステータスが「未処理」 → 未処理
    • 両方を満たせば「要対応」

LET を使わないと、こうなりがちです。

=IF(AND(A2<TODAY(), B2="未処理"), "要対応", "")

複雑ではありませんが、条件が増えると読みにくくなります。

LET で論理条件をまとめるとこうなります。

=LET(
  期限切れ, A2<TODAY(),
  未処理,   B2="未処理",
  要対応条件, AND(期限切れ, 未処理),
  IF(要対応条件, "要対応", "")
)
  • 期限切れ が何を意味しているか、一目で分かる
  • 未処理 も同様
  • 最終判定では 要対応条件 という名前だけを見れば意図がつかめる

実務で「ロジックを他人に渡す」「数か月後の自分が見直す」時に、効果が大きいです。


3つ以上の論理条件を整理する

例3:複数条件でランク付け(A/B/C+フラグ)

前提:

  • B列:売上
  • C列:利益率(0〜1)
  • 条件
    • 売上 1,000,000 以上 → 高売上
    • 利益率 0.2 以上 → 高利益率
    • 売上 300,000 未満 → 低売上
  • 判定
    • 高売上 かつ 高利益率 → 「Aランク」
    • 高売上 かつ 高利益率でない → 「Bランク」
    • 低売上 → 「Cランク」
    • それ以外 → 「判定中」

LET で論理条件をまとめるとこう書けます。

=LET(
  高売上,     B2>=1000000,
  高利益率,   C2>=0.2,
  低売上,     B2<300000,
  A条件,      AND(高売上, 高利益率),
  B条件,      AND(高売上, NOT(高利益率)),
  C条件,      低売上,
  IFS(
    A条件, "Aランク",
    B条件, "Bランク",
    C条件, "Cランク",
    TRUE,  "判定中"
  )
)

IFS の中で「ごちゃごちゃした条件式」を書く代わりに、
あらかじめ名前を付けておくことで、評価基準の意味がとても読みやすくなります。


論理条件+計算を一緒にまとめる

例4:条件チェックと計算結果を同じ LET で管理

前提:

  • B列:数量
  • C列:単価
  • 条件
    • 数量 > 0 → 数量有効
    • 単価 > 0 → 単価有効
  • 両方有効なときだけ 金額=数量×単価
  • それ以外は空白

通常の書き方はこんな感じです。

=IF(AND(B2>0, C2>0), B2*C2, "")

これを LET で整理するとこうなります。

=LET(
  数量,      B2,
  単価,      C2,
  数量有効,  数量>0,
  単価有効,  単価>0,
  有効条件,  AND(数量有効, 単価有効),
  IF(有効条件, 数量*単価, "")
)
  • 数量単価 という変数を作ることで、
    長いセル参照(例:$B$2, $C$2)を何度も書かずに済む
  • 論理条件(数量有効・単価有効)も名前がついて分かりやすい

少しだけ応用:論理フラグを配列でまとめるイメージ

※ 発想だけ紹介します(動的配列対応の Excel 前提)

複数の条件を一度に評価した配列を LET で変数に置いて、
後ろの式で使い回すような書き方もできます。

例えば、

  • 「売上 >= 100,000」
  • 「利益 >= 10,000」

の 2 つのフラグを、行方向にまとめて扱ったりするイメージです。


例題

問題1

B2 に売上、C2 に利益が入っています。
売上が 100,000 以上、かつ 利益が 10,000 以上のとき「優良」、
それ以外は「対象外」と表示します。

LET 関数を使って、
売上条件・利益条件・優良条件 に名前を付けてから判定する式を書いてください。

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

問題2

A2 に期限日、B2 にステータス(”未処理” / “処理中” / “完了”)が入っています。
「期限日が今日より前」かつ「ステータスが未処理」のとき「要対応」、
それ以外は空白と表示します。

期限切れ・未処理・要対応条件 に名前を付けて LET で書いてください。

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

問題3

B2 に数量、C2 に単価が入っています。
数量>0 かつ 単価>0 のときだけ 金額(数量×単価)を表示し、
それ以外は空白を返す式を、数量・単価・数量有効・単価有効・有効条件 を LET で定義して書いてください。

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

問題4

B2 に売上、C2 に利益率が入っています。

条件:
高売上 :売上 >= 1,000,000
高利益率 :利益率 >= 0.2
低売上 :売上 < 300,000

判定:
高売上かつ高利益率 →「Aランク」
高売上かつ高利益率でない →「Bランク」
低売上 →「Cランク」
それ以外 →「判定中」

これを LET+IFS で、
高売上・高利益率・低売上・A条件・B条件・C条件 に名前を付けて書いてください。

=LET(
  高売上,     B2>=1000000,
  高利益率,   C2>=0.2,
  低売上,     B2<300000,
  A条件,      AND(高売上, 高利益率),
  B条件,      AND(高売上, NOT(高利益率)),
  C条件,      低売上,
  IFS(
    A条件, "Aランク",
    B条件, "Bランク",
    C条件, "Cランク",
    TRUE,  "判定中"
  )
)

問題5

A2 に点数が入っています。
80 以上 →「優」、60〜79 →「良」、40〜59 →「可」、それ以外 →「不可」
という評価をします。

まず 4 つの論理条件を LET で
「優条件」「良条件」「可条件」「不可条件」として定義してから、
IFS で評価を返す式を書いてください。

※「不可条件」は「それ以外」でも構いません。

=LET(
  優条件, A2>=80,
  良条件, AND(A2>=60, A2<80),
  可条件, AND(A2>=40, A2<60),
  IFS(
    優条件, "優",
    良条件, "良",
    可条件, "可",
    TRUE,   "不可"
  )
)

まとめ

LET を使って論理条件をまとめるときのポイントは、

  1. よく出てくる条件や長い条件に“名前”を付ける
  2. その名前(変数)を使って IF や IFS をシンプルに書き直す
  3. 「売上条件」「期限切れ」「高利益率」など、意味の分かる日本語名にする

この 3 つだけです。

IF・AND・OR を頑張って 1 行に詰め込むのではなく、
「いったん LET で条件に名前を付けてあげる」発想を持つと、
数式がぐっと“読めるロジック”に変わります。

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