Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ AND、OR、NOTの組み合わせ | 高度な検証ロジック
Excelデータ検証と管理

AND、OR、NOTの組み合わせ

メニューを表示するにはスワイプしてください

複数条件が必要な理由

実際のビジネスルールでは、単一の条件だけでは十分でない場合がほとんどです。現場での検証ロジックは、次のような形になります。

  • 「Xが真でかつYが真の場合のみ受け入れる」
  • 「XまたはYが満たされていれば受け入れる」
  • 「Xが該当しない場合のみ受け入れる」

ExcelのANDORNOT関数を使うことで、複数の論理チェックを1つの数式にまとめることができます。これはカスタム検証に不可欠な機能です。

AND — すべての条件が真である必要

ANDは、内部のすべての条件が満たされた場合のみTRUEを返します。1つでも条件が失敗すると、数式全体はFALSEとなり、入力は拒否されます。

構文: =AND(condition1, condition2, ...)

例 — カテゴリごとの有効な範囲内の単価:

すべての商品は150から2000の範囲で価格設定する必要があります。Unit Priceが列Iにある場合:

=AND(I2>=150, I2<=2000)

両方の境界条件を同時に満たす必要があります。範囲外の場合、入力は失敗します。

Note
注意

Excelのバージョンや地域設定によって、数式の引数区切り記号がカンマ , またはセミコロン ; になる場合があります。

例:
=AND(I2>=150, I2<=2000)
=AND(I2>=150; I2<=2000)

OR — 少なくとも1つの条件が真である必要がある

OR は、内部のいずれかの条件が満たされた場合に TRUE を返します。すべての条件が失敗した場合のみ FALSE を返します。

構文: =OR(condition1, condition2, ...)

例 — 特定の地域のみ割引が許可される場合:

割引は East または West 地域のみで許可されます。Region が列 CDiscount % が列 J にあると仮定します。

=OR(C2="East", C2="West", J2=0)

意味: 地域がEastまたはWest、または割引が適用されていない場合に入力を受け付けます。

NOT — 結果を反転する

NOTTRUEFALSE に、FALSETRUE に反転します。許可されない条件を定義する方が簡単な場合に使用します。

構文: =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つの検証ルールに分割することで、より明確にできるか検討。

課題

  1. Unit Price 列に AND 検証を適用:

    • 数式: =AND(I2>=50, I2<=5000)
    • エラーメッセージ: "Unit Price must be between 50 and 5000"
  2. Discount % 列に OR 検証を適用:

    • 数式: =OR(C2="East", C2="West", J2=0)
    • エラーメッセージ: "Discounts are only allowed for East and West regions"
  3. Status 列に NOT 検証を適用:

    • 数式: =NOT(AND(M2="Closed", L2=""))
    • エラーメッセージ: "Status cannot be Closed while End Date is empty"
  4. 各ルールを有効・無効な入力でテストし、3つすべてが期待通りに動作することを確認;

  5. 空の列に課題3の数式を補助として貼り付け、削除前に行ごとの TRUE/FALSE 出力を観察。

すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 3.  2

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

セクション 3.  2
some-alt