Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ セル間検証ルール | 高度な検証ロジック
Excelデータ検証と管理

セル間検証ルール

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

クロスセルルールとは?

これまで作成してきた検証ルールは、すべて単一セルの値を固定条件(数値範囲、リスト、テキストパターンなど)と照合するものでした。クロスセル検証はさらに一歩進み、同じ行内の別のセルと入力値を比較します。

Excelにおけるクロスセル参照の扱い

行2のセルにカスタム検証式を設定する際、同じ行内の他のセルを自由に参照できます。Excelは、通常の数式と同様に、列全体にルールを適用する際に参照を自動調整します。

例1: 終了日は開始日より後でなければならない

最も一般的なクロスセルルールです。終了日が開始日より前の場合は論理的なエラーですが、組み込みルールでは検出できません。カスタム数式で対応可能です。

たとえば、L列End Date)の検証でK列Start Date)を参照する場合:

=L2>K2

Excelは自動的にL3>K3L4>K4など、下の各セルに対して評価します。End DateStart Dateより前または同じ場合、入力は拒否されます。

例2: 割引には最小数量が必要

割引は、注文数量が条件を満たす場合のみ適用されるべきです。H列QuantityJ列が**Discount %**の場合:

=IF(J2>0, H2>=3, TRUE)

この式は「割引が入力されている場合、数量は3以上でなければならない。そうでなければ常に許可する」となります。

最後のTRUEは重要です。割引が0の場合、数量チェックなしで通過できるようにします。

例3: 単価はカテゴリに応じて制限

Tech製品は500未満で販売してはいけません。Office製品にはこの制限はありません。D列CategoryI列Unit Priceの場合:

=IF(D2="Tech", I2>=500, TRUE)

この式は「カテゴリがTechの場合は最低価格を強制し、それ以外はどんな価格でも許可する」となります。

クロスセルルールの安全な構築

注意すべきポイント:

  • 正しい列の固定 — 行参照は相対参照(H2$H$2ではなく)を使用し、列内で数式が正しく調整されるようにする;
  • 空白セルへの対応 — 参照セルが空の場合に備え、数式をIFIFERRORでラップし、予期しない拒否を防ぐ;
  • 境界値でのテスト — 同じ日付、数量ゼロ、空欄フィールドなど、クロスセルルールが最も壊れやすいケースでテストする。

課題

  1. End Date列にクロスセル検証を適用:

    • 数式: =L2>K2
    • エラースタイル: Stop
    • エラーメッセージ: "End Date must be after Start Date"
  2. **Discount %**列にクロスセル検証を適用:

    • 数式: =IF(J2>0, H2>=3, TRUE)
    • エラースタイル: Warning
    • エラーメッセージ: "Discount should only be applied for quantities of 3 or more"
  3. Unit Price列にクロスセル検証を適用:

    • 数式: =IF(D2="Tech", I2>=500, TRUE)
    • エラースタイル: Stop
    • エラーメッセージ: "Tech products must be priced at 500 or above"
  4. Start Date列にクロスセル検証を適用:

    • 数式: =K2>=B2
    • エラースタイル: Stop
    • エラーメッセージ: "Start Date cannot be before Order Date"
  5. 各列で意図的に矛盾する値を入力し、4つのルールがすべて正しく動作することを確認する;

  6. 参照列に空白セルを入力してテストし、予期しない挙動がないか確認し、対応方法を検討する。

すべて明確でしたか?

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

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

セクション 3.  3

AIに質問する

expand

AIに質問する

ChatGPT

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

セクション 3.  3
some-alt