「2つの条件のうち、どちらか一方だけが当てはまるかを判定したい」と思ったことはありませんか?
AND関数やOR関数では「両方TRUE」「どちらかTRUE」の判定はできますが、「片方だけTRUE」 を判定するのはちょっと面倒ですよね。
そんなときに使えるのが XOR関数 です。この記事では、XOR関数の基本的な使い方から、IF関数との組み合わせ、AND・OR関数との違いまでわかりやすく解説します。
XOR関数とは?
XOR関数は、指定した論理値の 排他的論理和(Exclusive OR) を返す関数です。
読み方は「エクスクルーシブ オア」で、「エックスオア」と呼ばれることもあります。
簡単に言うと、「指定した条件のうち、TRUEが 奇数個 のときにTRUEを返す」という動作をします。
条件が2つの場合は、次のようなイメージです。
| 条件1 | 条件2 | XOR関数の結果 |
|---|---|---|
| TRUE | TRUE | FALSE |
| TRUE | FALSE | TRUE |
| FALSE | TRUE | TRUE |
| FALSE | FALSE | FALSE |
ポイントは「両方TRUE」のときにFALSEになること。AND関数やOR関数にはないXOR関数ならではの特徴です。
XOR関数は Excel 2013以降 および Microsoft 365 で使用できます。Excel 2010以前のバージョンでは使用できないので注意してください。
XOR関数の書き方(構文と引数)
基本構文
=XOR(論理式1, [論理式2], ...)
[] で囲まれた引数は省略可能です。
引数の説明
| 引数 | 必須/省略可 | 説明 |
|---|---|---|
| 論理式1 | 必須 | 判定したい条件や論理値(TRUE/FALSE) |
| 論理式2〜254 | 省略可 | 追加の条件。最大254個まで指定可能 |
引数には、論理値(TRUE/FALSE)のほかに、論理式(A1>10 など)やセル参照、配列を指定できます。
文字列や空白セルは無視されます。指定した範囲に論理値が1つも含まれない場合は #VALUE! エラーになります。
基本的な使い方
数式に直接条件を書く方法
まずは、XOR関数の中に直接条件式を書く基本的な使い方です。
=XOR(3>12, 4>6)
この式では、3>12 はFALSE、4>6 もFALSEです。TRUEが0個(偶数個)なので、結果は FALSE になります。
次の式を見てみましょう。
=XOR(10>5, 4>6)
10>5 はTRUE、4>6 はFALSEです。TRUEが1個(奇数個)なので、結果は TRUE になります。
セル参照を使う方法
実務では、セルに入力された値を参照するケースが一般的です。
たとえば、B2セルに営業部の達成フラグ(TRUE/FALSE)、C2セルに企画部の達成フラグが入っているとします。
=XOR(B2, C2)
この式は「どちらか一方の部署だけが目標を達成している」場合にTRUEを返します。
実践的な使い方・応用例
IF関数と組み合わせて結果を表示する
XOR関数はTRUEかFALSEしか返さないので、実務では IF関数 と組み合わせて使うことが多いです。
たとえば、午前シフトと午後シフトのどちらか一方だけに出勤しているかを判定する場面を考えてみましょう。
| A | B | C | |
|---|---|---|---|
| 1 | 社員名 | 午前出勤 | 午後出勤 |
| 2 | 田中 | TRUE | FALSE |
| 3 | 佐藤 | TRUE | TRUE |
| 4 | 鈴木 | FALSE | FALSE |
D2セルに次の式を入力します。
=IF(XOR(B2, C2), "半日勤務", "該当なし")
| 社員名 | 午前出勤 | 午後出勤 | 判定結果 |
|---|---|---|---|
| 田中 | TRUE | FALSE | 半日勤務 |
| 佐藤 | TRUE | TRUE | 該当なし |
| 鈴木 | FALSE | FALSE | 該当なし |
田中さんは午前だけ出勤しているので「半日勤務」と表示されます。佐藤さんは両方出勤、鈴木さんは両方欠勤なので「該当なし」です。
3つ以上の条件を判定する
XOR関数は3つ以上の条件を指定することもできます。ただし、動作が少し変わるので注意してください。
XOR関数は「TRUEの数が奇数個のときにTRUE」を返します。2つの条件なら直感的ですが、3つ以上になるとやや複雑です。
=XOR(TRUE, TRUE, TRUE)
TRUEが3個(奇数個)なので、結果は TRUE です。
=XOR(TRUE, TRUE, FALSE)
TRUEが2個(偶数個)なので、結果は FALSE です。
3つ以上の条件で「どれか1つだけTRUE」を判定したい場合は、XOR関数ではなく COUNTIF関数 などで「TRUEの数が1」かどうかを確認する方法がより確実です。
エラー対処とAND・OR関数との違い
#VALUE! エラーの原因と対処
指定した範囲に論理値(TRUE/FALSE)が1つも含まれない場合に #VALUE! エラーが発生します。
=XOR("あ", "い")
文字列だけを指定するとエラーになります。引数に論理値や論理式を指定しているか確認してください。
エラーへの対処は IFERROR関数 で囲む方法が便利です。
=IFERROR(XOR(A1, B1), "判定不可")
また、XOR関数はExcel 2013で追加された関数です。それ以前のバージョンでは #NAME? エラーが表示されます。古いバージョンで同じ処理をしたい場合は、次の代替式を使ってください。
=OR(A1, B1) - AND(A1, B1)
これは「A1かB1の少なくとも一方がTRUE」かつ「両方TRUEではない」ことを判定するので、XOR関数と同じ結果になります。
AND・OR関数との違い
XOR関数と混同しやすい AND関数 ・ OR関数 との違いを整理しておきましょう。
| 条件1 | 条件2 | AND関数 | OR関数 | XOR関数 |
|---|---|---|---|---|
| TRUE | TRUE | TRUE | TRUE | FALSE |
| TRUE | FALSE | FALSE | TRUE | TRUE |
| FALSE | TRUE | FALSE | TRUE | TRUE |
| FALSE | FALSE | FALSE | FALSE | FALSE |
使い分けの目安は次のとおりです。
- AND関数: すべての条件がTRUEのときにTRUEにしたい
- OR関数: いずれかの条件がTRUEのときにTRUEにしたい
- XOR関数: どちらか一方だけがTRUEのときにTRUEにしたい
また、ビット単位の排他的論理和を計算したい場合は BITXOR関数 を使います。XOR関数は論理値の判定、BITXOR関数は数値のビット演算という違いがあります。
まとめ
XOR関数は「どちらか一方だけがTRUEかどうか」を判定できる論理関数です。
この記事のポイントをおさらいしましょう。
- XOR関数は TRUEの数が奇数個のときにTRUE を返す
- IF関数と組み合わせると「片方だけ該当」の条件分岐ができる
- 3つ以上の条件では「奇数個がTRUE」の判定になるので注意
- AND関数(すべてTRUE)・OR関数(いずれかTRUE)との使い分けがポイント
- Excel 2013以降で使用可能。古いバージョンでは代替式を活用
XOR関数は使用頻度こそ高くありませんが、「片方だけ」の判定が必要な場面では非常に便利です。AND関数やOR関数と合わせて覚えておくと、条件分岐のバリエーションがぐっと広がりますよ。
