前回の連載では「AND」や「OR」といった関数の使い方を紹介した。Excelには、これらのほかにも「XOR」や「NOT」といった関数が用意されている。頻繁に使う関数ではないが、ANDやORに関連する関数として覚えておくとよいだろう。関数XORは「排他的論理和」で複数条件を処理するとき、関数NOTはTRUE/FALSEを反転させるときに活用できる。

関数XORの動作

前回の連載で紹介したように、複数の条件を「かつ」で結ぶときは関数AND、「または」で結ぶときは関数ORを使用するのが一般的だ。別の言い方で表現すると、

 ・すべての条件を満たすときは ・・・・ 関数AND
 ・いずれかの条件を満たすときは ・・・ 関数OR

を使用する、と覚えておけばよい。これらのほかにも、Excelは「XOR」や「NOT」といった関数でTRUE/FALSEを制御することが可能となっている。

  • 関数XORと関数NOTの使い方

関数XORは「排他的論理和」と呼ばれる手法で複数条件を処理するもので、条件が2つの場合、「どちらか一方の条件だけを満たすとき」にTRUEとなる。2つの条件を「両方とも満たさないとき」はFALSEになる。特徴的なのは、2つの条件を「両方とも満たすとき」もFALSEになることだ。

ANDとORを含めて各関数の動作をまとめると、以下の図のようになる。

  • 関数AND、OR、XORの動作一覧(条件が2つの場合)

関数XORの使い方はANDやORと同じで、カッコ内に条件をカンマ区切りで列記していけばよい。

◆関数XORの書式
 =XOR(条件1, 条件2, [条件3], ・・・)

具体的な例を使って解説していこう。以下の図は「レストランの予約フォーム」をExcelで作成した例だ。「各コースの人数が正しく入力されているか?」をチェックするためにIFとXORを組み合わせた関数がC10セルに入力されている。

  • 関数XORでIFの条件を指定した例

関数XOR内に指定されている条件は以下の2つ。

 ・Aコースの人数は「1以上」か?(C8>=1)
 ・Bコースの人数は「1以上」か?(C9>=1)

これらの条件をXORで処理した結果に応じて、「OK」または「※コースの混在は不可」の文字が表示される仕組みになっている。

各パターンについて順番に見ていこう。まずは、Aコースのみ「1以上」の場合だ。この場合、(C8>=1)の条件を満たす、(C9>=1)の条件は満たさない、となるので「どちらか一方の条件だけを満たすとき」に該当する。よって、関数XORの結果はTRUEになり、「OK」という文字が表示される。

  • Aコースのみ「1以上」の場合

続いては、Bコースのみ「1以上」の場合だ。この場合、(C9>=1)の条件は満たしている。もう一方のC8セルは「空白セル」になっているが、これは数値の0(ゼロ)とみなされるので(C8>=1)の条件は満たしていない。つまり、「どちらか一方の条件だけを満たすとき」に該当することになり、関数XORの結果はTRUEになる。

  • Bコースのみ「1以上」の場合

今度は、AコースとBコースの両方に「1以上」の数値を入力した例だ。この場合、(C8>=1)と(C9>=1)の条件を「両方とも満たすとき」に該当する。よって、関数XORの結果はFALSEになり、「※コースの混在は不可」という文字が表示される。

  • 両方とも「1以上」の場合

このレストランでは「Aコースを3人、Bコースを2人」などの予約は受け付けておらず、コースを統一して予約するのが基本となっている。このような場合にIFとXORを組み合わせたチェック機能を設けておくと、「コースが統一されているか?」を手軽に確認することが可能となる。

ちなみに、AコースとBコースが両方とも「1以上」でない場合も、関数XORの結果はFALSEになり、「※コースの混在は不可」という文字が表示されてしまう。

  • 両方とも「1以上」でない場合

こういった状況を考慮すると、FALSE(偽の場合)に表示する文字は「人数を入力してください(※コースの混在は不可)」などにしておいた方が無難かもしれない。

なお、もっと根本的な議論をすると、「各コースの人数」を入力する仕様になっていることが、そもそもの設計ミスといえる。コースの混在を認めないのであれば、「人数」と「コース選択」という形で入力欄を用意しておくべきだ。よって、上に示した図は「XORの動作を解説するための例」として捉えて頂ければ幸いだ。

条件が3つ以上ある場合は?

この記事は
Members+会員の方のみ御覧いただけます

ログイン/無料会員登録

会員サービスの詳細はこちら