「スプレッドシートで”どちらか一方だけ”を判定したい」「割引と会員特典が同時に適用されていないかチェックしたい」。こんな場面、仕事でときどきありますよね。
AND関数やOR関数では「両方TRUE」や「どれかTRUE」は判定できます。しかし「片方だけTRUE」は判定できません。
そんなときに使うのが、スプレッドシートのXOR関数です。この記事では構文と基本の使い方から、IF関数との組み合わせまで丁寧に解説します。AND・OR・NOTとの違いやエラーの対処法もまとめています。
スプレッドシートのXOR関数とは?
XOR関数(読み方: エックスオア関数)は、TRUEの個数が奇数個かどうかを判定する関数です。「XOR」は「eXclusive OR」の略で、日本語では「排他的論理和」と呼ばれます。
2つの条件で使う場合は「どちらか一方だけTRUE」のときにTRUEを返します。両方TRUEや両方FALSEではFALSEになります。
XOR関数でできることをまとめると、次のとおりです。
- 2つの条件のうち片方だけ満たしているか判定する
- IF関数と組み合わせて排他チェックの条件分岐を作る
- 最大255個の条件を同時にチェックする
XOR関数単体はTRUE / FALSEを返すだけです。実務ではIF関数と組み合わせて使うことがほとんどですよ。
NOTE
XOR関数はGoogleスプレッドシートの全バージョンで使えます。Excelとの互換性も完全なので、ファイルのやり取りでも安心です。
AND・OR・XOR の違いを真偽値表で比較
XOR関数を理解するには、AND・ORとの違いを並べて見るのが一番です。NOT関数も加えた4つの論理関数を比較してみましょう。
| 論理式1 | 論理式2 | AND | OR | XOR | NOT(論理式1) |
|---|---|---|---|---|---|
| TRUE | TRUE | TRUE | TRUE | FALSE | FALSE |
| TRUE | FALSE | FALSE | TRUE | TRUE | FALSE |
| FALSE | TRUE | FALSE | TRUE | TRUE | TRUE |
| FALSE | FALSE | FALSE | FALSE | FALSE | TRUE |
XOR関数だけ結果のパターンが独特です。AND関数は「両方TRUE」のとき、OR関数は「どちらかTRUE」のときに結果がTRUEになります。XOR関数は「片方だけTRUE」のときだけTRUEです。
「両方同じ → FALSE、片方だけ → TRUE」と覚えておけば大丈夫ですよ。
スプレッドシートのXOR関数の書き方(構文と引数)
基本構文
=XOR(論理式1, [論理式2], ...)
カッコの中に、判定したい条件を1つ以上指定します。条件はカンマで区切って追加できます。
引数の説明
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| 論理式1 | 必須 | 判定したい条件(例: A2<>“”) |
| 論理式2以降 | 任意 | 追加の条件。最大255個まで指定できる |
引数は1つだけでも動きますが、2つ以上の条件で排他判定をしてこそ真価を発揮します。
TIP
論理式にはセル参照と比較演算子を組み合わせます。テキストを比較するときはダブルクォーテーションで囲んでください。例:
A1="完了"
TRUE/FALSEの判定ルール
XOR関数の判定は「TRUEの個数が奇数かどうか」で決まります。
- TRUEが奇数個 → 結果はTRUE
- TRUEが偶数個(0個を含む) → 結果はFALSE
引数が2つの場合は「片方だけTRUE → TRUE」です。数値を引数に渡した場合は、0がFALSE、0以外がTRUEとして扱われます。
XOR関数の基本的な使い方
ここからは実際の数式で基本的な使い方を確認していきましょう。
2つの条件でどちらか一方だけ判定する
B列に「割引コード」、C列に「会員特典」の適用フラグが入っているとします。どちらか一方だけ適用されているかを判定してみましょう。
=XOR(B2<>"", C2<>"")
- B2<>“”: 割引コードが入力されているか
- C2<>“”: 会員特典が入力されているか
B2だけに値があれば結果はTRUEです。両方に値がある場合はFALSEになります。両方空欄の場合もFALSEです。
3つ以上の引数を渡したときの動作(奇数個TRUEルール)
XOR関数に3つ以上の引数を渡すと、動作が少し変わります。「片方だけ」ではなく「TRUEが奇数個」かどうかで判定します。
具体例で確認しましょう。
=XOR(TRUE, TRUE, TRUE) → TRUE(TRUEが3個 = 奇数)
=XOR(TRUE, TRUE, FALSE) → FALSE(TRUEが2個 = 偶数)
=XOR(TRUE, FALSE, FALSE) → TRUE(TRUEが1個 = 奇数)
=XOR(FALSE, FALSE, FALSE)→ FALSE(TRUEが0個 = 偶数)
3つ以上の引数ではこのルールが適用されます。「どれか1つだけTRUE」を判定したい場合はXOR関数だけでは実現できません。COUNTIF関数などで工夫が必要です。
実務で使う場面の多くは引数2つのパターンです。「片方だけ」の判定は2つの条件で使うのが基本ですよ。
IF関数×XOR関数の実践テクニック
XOR関数の実務での本領発揮は、IF関数との組み合わせです。XOR単体のTRUE/FALSEではなく、条件に応じた文字列や数値を返せるようになります。
IF+XORで「どちらか一方だけ」の条件分岐
IF関数の第1引数にXOR関数を入れるのが基本形です。
=IF(XOR(条件1, 条件2), TRUE値, FALSE値)
どちらか一方だけ条件を満たしたら「TRUE値」を返します。両方満たす場合と両方満たさない場合は「FALSE値」です。
実務パターン1: シフト入力の排他チェック
「午前シフト」と「午後シフト」のどちらか一方だけ入力されているか確認する例です。B列に午前、C列に午後のシフトが入っています。
=IF(XOR(B2<>"", C2<>""), "OK", "要確認")
午前だけ、または午後だけ入力されていれば「OK」です。両方入力されている場合や、両方空欄の場合は「要確認」になります。ダブルブッキングの防止に役立ちますよ。
実務パターン2: 連絡方法の二択チェック
「メール希望」と「電話希望」のうち、片方だけ◯になっているかチェックする例です。D列にメール希望、E列に電話希望の◯/空白が入っています。
=IF(XOR(D2="◯", E2="◯"), "OK", "連絡方法を1つ選択してください")
「メール希望」か「電話希望」のどちらか一方だけ◯になっていれば「OK」です。両方◯の場合や、どちらも空白の場合は「連絡方法を1つ選択してください」と案内が表示されます。
フォームの入力チェックに組み込んでおくと、確認の手間が減りますよ。
TIP
条件分岐を3段階以上に分けたい場合は、IFS関数も検討してみてください。
よくあるエラーと対処法
XOR関数で「結果がおかしい」「エラーが出る」というときの原因と対処法をまとめます。
エラー一覧と対処法
| エラー・症状 | 原因 | 対処法 |
|---|---|---|
| #VALUE! | 引数に文字列を直接指定した(例: =XOR("はい", "いいえ")) | 比較演算子を使う(例: =XOR(A1="はい", B1="いいえ")) |
| 予想と逆の結果(3引数) | 「片方だけ」ではなく「奇数個TRUE」ルールで動作している | 引数が2つになるよう条件を整理する |
| 参照先のエラーが伝播 | 参照セルに#N/Aなどのエラーがある | IFERROR関数でエラーを事前に処理する |
| #ERROR! | 括弧の閉じ忘れ・カンマの過不足 | 数式バーで括弧の対応を確認する |
| 数値が0のときFALSE | 0はFALSEとして扱われる仕様 | 0を有効値にしたい場合は A1>=0 のように比較式にする |
3つ以上の引数は注意が必要
XOR関数を3つ以上の引数で使うと、直感と異なる結果になることがあります。
=XOR(TRUE, TRUE, TRUE) → TRUE(3個=奇数なのでTRUE)
3つすべてTRUEなのにTRUEが返ります。「片方だけ」を期待していると混乱しますよね。排他チェックには引数を2つに限定するのがおすすめです。
AND・OR・XOR・NOTの使い分け
比較表で違いを確認
スプレッドシートの論理関数4つの違いを表で整理しましょう。
| 関数 | 判定ルール | 使いどころ |
|---|---|---|
| AND | すべてTRUE → TRUE | 「かつ」の条件判定 |
| OR | 1つ以上TRUE → TRUE | 「または」の条件判定 |
| XOR | TRUEが奇数個 → TRUE | 「どちらか一方だけ」の判定 |
| NOT | TRUE⇔FALSEを反転 | 条件の否定 |
どの関数を使うか判断する
迷ったときは次の基準で選んでみてください。
- すべての条件を満たす必要がある → AND関数
- どれか1つ満たせばOK → OR関数
- 片方だけ満たしているかチェックしたい → XOR関数
- 条件をひっくり返したい → NOT関数
実務で使用頻度が高いのはAND関数とOR関数です。XOR関数は排他チェックという限定的な場面で力を発揮します。「どちらか一方だけ」を判定したくなったら思い出してくださいね。
まとめ
XOR関数は、条件のうちどちらか一方だけが当てはまるかを判定する論理関数です。
- 2つの条件では「片方だけTRUE → TRUE」
- 3つ以上の条件では「TRUEが奇数個 → TRUE」
- IF関数と組み合わせて排他チェックの条件分岐を作るのが定番
- AND関数は「かつ」、OR関数は「または」、XOR関数は「片方だけ」
まずはIF関数×XOR関数の組み合わせから試してみてください。シフトの排他チェックや入力フォームのバリデーションなど、実務で活躍する場面がありますよ。
複数条件でデータを数えたい場合は、COUNTIFS関数も合わせてチェックしてみてください。
