AND、OR、NOTの組み合わせ
メニューを表示するにはスワイプしてください
複数条件が必要な理由
実際のビジネスルールでは、単一の条件だけでは十分でない場合がほとんどです。現場での検証ロジックは、次のような形になります。
- 「Xが真でかつYが真の場合のみ受け入れる」
- 「XまたはYが満たされていれば受け入れる」
- 「Xが該当しない場合のみ受け入れる」
ExcelのAND、OR、NOT関数を使うことで、複数の論理チェックを1つの数式にまとめることができます。これはカスタム検証に不可欠な機能です。
AND — すべての条件が真である必要
ANDは、内部のすべての条件が満たされた場合のみTRUEを返します。1つでも条件が失敗すると、数式全体はFALSEとなり、入力は拒否されます。
構文: =AND(condition1, condition2, ...)
例 — カテゴリごとの有効な範囲内の単価:
すべての商品は150から2000の範囲で価格設定する必要があります。Unit Priceが列Iにある場合:
=AND(I2>=150, I2<=2000)
両方の境界条件を同時に満たす必要があります。範囲外の場合、入力は失敗します。
Excelのバージョンや地域設定によって、数式の引数区切り記号がカンマ , またはセミコロン ; になる場合があります。
例:
=AND(I2>=150, I2<=2000)
=AND(I2>=150; I2<=2000)
OR — 少なくとも1つの条件が真である必要がある
OR は、内部のいずれかの条件が満たされた場合に TRUE を返します。すべての条件が失敗した場合のみ FALSE を返します。
構文: =OR(condition1, condition2, ...)
例 — 特定の地域のみ割引が許可される場合:
割引は East または West 地域のみで許可されます。Region が列 C、Discount % が列 J にあると仮定します。
=OR(C2="East", C2="West", J2=0)
意味: 地域がEastまたはWest、または割引が適用されていない場合に入力を受け付けます。
NOT — 結果を反転する
NOT は TRUE を FALSE に、FALSE を TRUE に反転します。許可されない条件を定義する方が簡単な場合に使用します。
構文: =NOT(condition)
例 — End Dateが空の場合、StatusをClosedにできない:
=NOT(AND(M2="Closed", L2=""))
意味: StatusがClosedかつEnd Dateが空白の場合は入力を拒否します。それ以外の組み合わせは受け付けます。
3つすべてを組み合わせる
これらの関数をネストして組み合わせることで、真の力を発揮します。どれだけ深くネストしても制限はありませんが、ロジックが読みやすいことを心がけてください。
例 — 数量は正の値、かつ割引は許容範囲内:
=AND(H2>0, OR(J2=0, AND(J2>=5, J2<=30)))
意味: 数量は0より大きく、割引は0または5から30の範囲内である必要があります。
実用的なヒント
- 段階的に構築 — 各条件を組み合わせる前に個別にテスト;
- 補助列の活用 — まず空の列に数式を貼り付け、行ごとに
TRUE/FALSEの結果を確認してから検証に組み込む; - 可読性の維持 — 条件が3~4つを超える場合は、補助列の利用や2つの検証ルールに分割することで、より明確にできるか検討。
課題
-
Unit Price 列に
AND検証を適用:- 数式:
=AND(I2>=50, I2<=5000) - エラーメッセージ: "Unit Price must be between 50 and 5000"
- 数式:
-
Discount % 列に
OR検証を適用:- 数式:
=OR(C2="East", C2="West", J2=0) - エラーメッセージ: "Discounts are only allowed for East and West regions"
- 数式:
-
Status 列に
NOT検証を適用:- 数式:
=NOT(AND(M2="Closed", L2="")) - エラーメッセージ: "Status cannot be Closed while End Date is empty"
- 数式:
-
各ルールを有効・無効な入力でテストし、3つすべてが期待通りに動作することを確認;
-
空の列に課題3の数式を補助として貼り付け、削除前に行ごとの TRUE/FALSE 出力を観察。
フィードバックありがとうございます!
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください