概要
「この条件とこの条件、あちこちで何度も書いていてぐちゃぐちゃ…」
「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(優良条件, "優良", "対象外")
)
読み方は、
売上条件= B2>=100000利益条件= C2>=10000優良条件= 売上条件 かつ 利益条件- 最後に
優良条件が 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 未満 →
低売上
- 売上 1,000,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 →
単価有効
- 数量 > 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 を使って論理条件をまとめるときのポイントは、
- よく出てくる条件や長い条件に“名前”を付ける
- その名前(変数)を使って IF や IFS をシンプルに書き直す
- 「売上条件」「期限切れ」「高利益率」など、意味の分かる日本語名にする
この 3 つだけです。
IF・AND・OR を頑張って 1 行に詰め込むのではなく、
「いったん LET で条件に名前を付けてあげる」発想を持つと、
数式がぐっと“読めるロジック”に変わります。
