前回の連載では「AND」や「OR」といった関数の使い方を紹介した。Excelには、これらのほかにも「XOR」や「NOT」といった関数が用意されている。頻繁に使う関数ではないが、ANDやORに関連する関数として覚えておくとよいだろう。関数XORは「排他的論理和」で複数条件を処理するとき、関数NOTはTRUE/FALSEを反転させるときに活用できる。
関数XORの動作
前回の連載で紹介したように、複数の条件を「かつ」で結ぶときは関数AND、「または」で結ぶときは関数ORを使用するのが一般的だ。別の言い方で表現すると、
・すべての条件を満たすときは ・・・・ 関数AND
・いずれかの条件を満たすときは ・・・ 関数OR
を使用する、と覚えておけばよい。これらのほかにも、Excelは「XOR」や「NOT」といった関数でTRUE/FALSEを制御することが可能となっている。
関数XORは「排他的論理和」と呼ばれる手法で複数条件を処理するもので、条件が2つの場合、「どちらか一方の条件だけを満たすとき」にTRUEとなる。2つの条件を「両方とも満たさないとき」はFALSEになる。特徴的なのは、2つの条件を「両方とも満たすとき」もFALSEになることだ。
ANDとORを含めて各関数の動作をまとめると、以下の図のようになる。
関数XORの使い方はANDやORと同じで、カッコ内に条件をカンマ区切りで列記していけばよい。
◆関数XORの書式
=XOR(条件1, 条件2, [条件3], ・・・)
具体的な例を使って解説していこう。以下の図は「レストランの予約フォーム」をExcelで作成した例だ。「各コースの人数が正しく入力されているか?」をチェックするためにIFとXORを組み合わせた関数がC10セルに入力されている。
関数XOR内に指定されている条件は以下の2つ。
・Aコースの人数は「1以上」か?(C8>=1)
・Bコースの人数は「1以上」か?(C9>=1)
これらの条件をXORで処理した結果に応じて、「OK」または「※コースの混在は不可」の文字が表示される仕組みになっている。
各パターンについて順番に見ていこう。まずは、Aコースのみ「1以上」の場合だ。この場合、(C8>=1)の条件を満たす、(C9>=1)の条件は満たさない、となるので「どちらか一方の条件だけを満たすとき」に該当する。よって、関数XORの結果はTRUEになり、「OK」という文字が表示される。
続いては、Bコースのみ「1以上」の場合だ。この場合、(C9>=1)の条件は満たしている。もう一方のC8セルは「空白セル」になっているが、これは数値の0(ゼロ)とみなされるので(C8>=1)の条件は満たしていない。つまり、「どちらか一方の条件だけを満たすとき」に該当することになり、関数XORの結果はTRUEになる。
今度は、AコースとBコースの両方に「1以上」の数値を入力した例だ。この場合、(C8>=1)と(C9>=1)の条件を「両方とも満たすとき」に該当する。よって、関数XORの結果はFALSEになり、「※コースの混在は不可」という文字が表示される。
このレストランでは「Aコースを3人、Bコースを2人」などの予約は受け付けておらず、コースを統一して予約するのが基本となっている。このような場合にIFとXORを組み合わせたチェック機能を設けておくと、「コースが統一されているか?」を手軽に確認することが可能となる。
ちなみに、AコースとBコースが両方とも「1以上」でない場合も、関数XORの結果はFALSEになり、「※コースの混在は不可」という文字が表示されてしまう。
こういった状況を考慮すると、FALSE(偽の場合)に表示する文字は「人数を入力してください(※コースの混在は不可)」などにしておいた方が無難かもしれない。
なお、もっと根本的な議論をすると、「各コースの人数」を入力する仕様になっていることが、そもそもの設計ミスといえる。コースの混在を認めないのであれば、「人数」と「コース選択」という形で入力欄を用意しておくべきだ。よって、上に示した図は「XORの動作を解説するための例」として捉えて頂ければ幸いだ。