要点 —
NOTは1つの結論を反転します:NOT(TRUE)はFALSE。XORは 排他的論理和で——入力が2つなら、両者が異なるときだけTRUEです。害を なすのは2つの罠。第1に、NOTは引数をちょうど1つしか取らないので、複合条件を 否定するにはNOT(AND(a, b))と書かなければなりません——そしてその真価は ド・モルガンの法則、こんがらがった条件をより単純な形へ書き換えることにあります。 第2に、入力が3つ以上のXORは「ちょうど1つが真」を意味しません——TRUEの個数が奇数のときTRUEを返します。「多くのうちちょうど1つ」には、代わりに 数えます。NOTはどこでも動作、XORは Excel 2013以降が必要です。
=IF(NOT(ISBLANK(A2)), "Filled", "Empty") ' 1つの結論を反転する
=XOR(A2="Yes", B2="Yes") ' ちょうど1つが Yes のとき TRUE
NOT と XOR は、人が最後に手を伸ばし、最も誤用する2つの論理関数です。NOT は、
それが本当に得意とするたった1つのことを知るまでは冗長に感じられます。XOR は、入力が
3つのときに期待と正反対の結果を静かに返すまでは自明に感じられます。どちらも、各々が
実際に何のためなのかを見た瞬間に腑に落ちます。
この記事で学べること
- 考え方の軸:
NOTは切り替えスイッチ、XORは差分検出器 - なぜ
NOTは引数をちょうど1つしか取らないのか——そして複合条件の罠 NOTがその立場に値するのはいつで、ただの<>の着飾りにすぎないのはいつか- ド・モルガンの法則:
NOTを知る価値を生む書き換え - 入力2つの
XOR(「両者が異なる」)と、3つ以上での奇数個の意外な点 - 「多くのうちちょうど1つ」に正しい道具——それは
XORではない
考え方の軸:切り替えスイッチと差分検出器
NOT は1つの結論のための照明スイッチです。入った TRUE/FALSE が何であれ、逆が
出てきます——それ以上でも以下でもありません。XOR は差分検出器です:2つの条件を
渡すと、「この2つは異なるか?」に答えます。
=NOT(A2>10) ' A2 が 10 より大きく「ない」とき TRUE
=XOR(A2>10, B2>10) ' そのうちちょうど1つが 10 より大きいとき TRUE
この2つの絵——反転と差分——を分けて持てば、条件を反転したり比較したりするのでは
なく組み合わせる AND/OR と取り違えることはありません。
NOTは引数をちょうど1つ取る(複合条件の罠)
NOT は単一の論理値を否定します。これが人が最初にぶつかるエラーです——2つの
条件を一度に否定しようとするのです。
=NOT(A2>0, B2>0) ' 誤り — 引数が多すぎる
=NOT(AND(A2>0, B2>0)) ' 正しい — 組み合わせた結論を否定する
複合条件を反転するには、まず(AND/OR で)
それを1つの結論に組み合わせ、それからその結論を反転します。NOT は連鎖の最後の
輪であって、決して組み合わせ役ではありません。
NOTがその立場に値するとき——そしてただの <> の変装にすぎないとき
多くのガイドが飛ばす正直な部分がここです:NOT の使い方の多くは純粋なノイズです。
NOT(A2="x") はまさに A2<>"x" と同じで、ただ長く読みにくいだけです。
=NOT(A2="Done") ' 動くが……
=A2<>"Done" ' ……こちらの方が明快
=NOT(A2>10) ' 動くが、A2<=10 の方が明快
単純な比較には、逆の演算子(<>、<=、>=)を使い、NOT はまるごと省きます。
NOT がその存在意義を得るのは2か所です:反転する演算子がない、すでにブールを返す
関数を否定するとき——NOT(ISBLANK(A2))、NOT(ISNUMBER(A2))
(IS関数を参照)——と、数式が文のように読めるよう
名前付きの、あるいは複合の条件を否定するとき。同じテストを1つの比較演算子で
表せるなら、ほぼ常にそちらの方が良い選択です。
ド・モルガンの法則:NOTの真の武器
NOT を知る価値がそもそもある理由は、こんがらがったロジックを書き換えられる
からです。ド・モルガンの法則によれば、AND の否定はそれぞれの否定の OR になり、
その逆も成り立ちます。
' 「AとBの両方 では ない」は「(A でない) OR (B でない)」と同じ
=NOT(AND(A2="EU", B2>1000)) = =OR(A2<>"EU", B2<=1000)
' 「A か B のどちらか では ない」は「(A でない) AND (B でない)」と同じ
=NOT(OR(Status="Void", Status="Draft")) = =AND(Status<>"Void", Status<>"Draft")
これが大事なのは、片方の形の方がほぼ常に読みやすく、かつ
IF や FILTER へ
渡しやすいからです。「キャンセルではなく、下書きでもないものをすべて残す」と
書いている自分に気づいたら、右側の AND(...<>...) の形が NOT(OR(...)) のラッパー
より明快です。この入れ替えを知っていれば、最初に書いた形に縛られるのではなく、
読みやすい方を選べます。
入力2つのXOR:「両者が異なる」
条件がちょうど2つのとき、XOR は「片方だが両方ではない」テストです——入力が食い違う
とき TRUE、一致するとき FALSE。
| A | B | OR |
XOR |
|---|---|---|---|
| FALSE | FALSE | FALSE | FALSE |
| TRUE | FALSE | TRUE | TRUE |
| FALSE | TRUE | TRUE | TRUE |
| TRUE | TRUE | TRUE | FALSE |
XOR と OR が食い違う唯一の行が最後の行です:OR は「はい、少なくとも1つ」と言い、
XOR は「いいえ——両方は許されない」と言います。それこそが本当の用途です——決して
両方が立ってはいけない、相互排他のフラグです。
=IF(XOR(C2="Paid", D2="Refunded"), "OK", "Check: both or neither")
XORの意外な点:3つ以上の入力は「ちょうど1つ」ではなく「奇数個」
ほぼ全員がかかる罠がここです。XOR を「ちょうど1つが真」と読むのは自然です。入力が
2つなら、たまたまそれで正しい。けれど3つ以上では正しくありません——XOR は
入力の奇数個が真のとき TRUE を返します。
=XOR(TRUE, TRUE, TRUE) ' -> TRUE (真が3つ = 奇数)、「ちょうど1つ」ではない
=XOR(TRUE, TRUE, FALSE) ' -> FALSE (真が2つ = 偶数)
=XOR(TRUE, FALSE, FALSE) ' -> TRUE (真が1つ = 奇数)
XOR は本当はパリティ(偶奇)チェックです——真がいくつあるかを数え、その個数が
奇数かどうかを報告します。それが欲しいものにぴったりのこともあります(パリティビット、
トグルの連鎖)が、「これらの箱のうちちょうど1つにチェックが入っている」という意味で
人が言うときには、まずそうではありません。
「多くのうちちょうど1つ」には、代わりに数える
「これらのうちただ1つだけが真」が本当に欲しいなら、XOR の使用をやめて、真を
直接数えます——それからその個数が 1 に等しいかを確かめます。
=(--(A2="Yes") + --(B2="Yes") + --(C2="Yes")) = 1 ' Yes がちょうど1つ
=COUNTIF(B2:D2, "Yes") = 1 ' 範囲に対する同じ考え
-- は各 TRUE/FALSE を 1/0 に変換し(SUMPRODUCT
を支えるのと同じ技)、その合計は文字どおり「いくつ真か」になります。それを 1 と
比べれば「ちょうど1つ」、>=1 なら「少なくとも1つ」(これが OR)、=0 なら
「1つもない」。数える方法はいくつの条件にもスケールし、パリティであなたを驚かせる
ことは決してありません。
判断
- ブールを返す関数からの1つの結論を反転する →
NOT(例:NOT(ISBLANK(...)))。 - 単純な比較を否定する →
NOTではなく<>、<=、>=を使う。 - こんがらがった
NOT(AND/OR(...))を単純化する → ド・モルガンの法則を適用し、 読みやすい側を残す。 - 相互排他のフラグ2つ →
XOR。 - 「いくつかのうちちょうど1つ」 →
--/COUNTIFで数える、3つ以上の入力にXORは決して使わない。
ExcelMaster の使いどころ
ここで人がつまずくロジックは微妙です——「両方ではない」「ちょうど1つ」「これらの
どれでもない」——そして間違った関数は静かに失敗し、端のケースで間違っている
もっともらしい答えを返します。ExcelMaster はルールをあなたが言うとおりに読み——
承認の箱がちょうど1つチェックされている行にフラグを立てる——それを実際に意味する
形を書きます(パリティの XOR ではなく、数えた =1)。あるいはド・モルガンの法則を
適用して、二重否定を半年後にも読める何かに変えます。
よくある質問
ExcelのNOT関数は何をする?
NOT は単一の論理値を反転します:NOT(TRUE) は FALSE、NOT(FALSE) は TRUE。
引数をちょうど1つしか取らないので、複合条件を否定するには包みます:
NOT(AND(A2>0, B2>0))。
そもそも NOT は必要? それとも <> で代用できる?
素の比較には <>(および <=、>=)の方が明快です:A2<>"x" は NOT(A2="x") に
勝ります。NOT は主に、ブールを返す関数を反転する——NOT(ISBLANK(A2))——か、
AND/OR の複合全体を否定するために使います。
ExcelのORとXORの違いは?
入力が2つのとき、両方が真の場合を除いて一致します:OR は TRUE、XOR は
FALSE を返します。XOR は「片方だが両方ではない」。「少なくとも1つ」には OR、
相互排他のフラグには XOR を使います。
3つの条件が真のとき XOR が TRUE を返すのはなぜ?
XOR が「ちょうど1つ」ではなくパリティをテストするからです。真の入力が奇数個の
とき TRUE を返すので、3つの真(奇数)は TRUE になります。「多くのうちちょうど
1つ」には、代わりに真を数えます:COUNTIF(range, TRUE)=1。
いくつかのセルのうちちょうど1つが埋まっていることをテストするには?
数えて 1 と比べます:=COUNTIF(B2:D2, "Yes")=1、または
=(--(A2="Yes")+--(B2="Yes")+--(C2="Yes"))=1。2つを超える条件に XOR を使っては
いけません——それは奇偶を調べるのであって、「ちょうど1つ」ではありません。
検証環境
検証環境: Excel 365(Windows 11)— 最終確認 2026-07-04。
関連ガイド: ExcelのAND & OR関数 · ExcelのIS関数 · ExcelのIF関数 · ExcelのSUMPRODUCT関数 · ExcelのFILTER関数
