要点 —
ANDとORは複数のTRUE/FALSE判定を受け取り、1つの 結論を返します。AND(…)はすべての判定が通ったときだけTRUE、OR(…)は 少なくとも1つ通ればTRUE。これら自身は何も決めません——役目はIF、条件付き書式のルール、フィルターの第1引数へ 判定を渡すことです。別々の IF を包むのではなく、テストの中に入れます:=IF(AND(B2>=60, C2="Yes"), "Pass", "Fail")。人がハマる点が2つ。セルに素の=AND(...)を書くとTRUEという文字が表示されるだけ、そして Excel には ショートサーキットがない——すべての引数を評価するので、AND(A2<>0, B2/A2>1)は依然として#DIV/0!を投げうる。全バージョンで動作します。
=IF(AND(B2>=60, C2="Yes"), "Pass", "Fail") ' 両方が真でなければならない
=IF(OR(B2>=90, C2="VIP"), "Priority", "Normal") ' どちらか一方で十分
AND と OR は Excel でいちばん基本的な関数に見えますし、単独で見ればそのとおり
です。けれど、これらにまつわる実務のバグはほぼすべて、たった1つの誤解から生まれます
——人はこれらを判断を下すものとして扱いますが、実際にやっているのは票を数えて
1つの答えを返すことだけなのです。この頭の中の絵さえ正しく持てば、ネスト、迷子の
TRUE、突然の #DIV/0! はすべて起こらなくなります。
この記事で学べること
- 考え方の軸:
AND/ORは票の集計係であって、判断者ではない - なぜ
IFの第1引数の中に入れるべきで、ネストしたIFを包むのではないのか - 「〜の間」を意味するのはどちらで、「どちらか」を意味するのはどちらか——そして人が 取り違える理由
- 素の数式の意外な結果:セルにただ
TRUEと出る - プログラマーの罠:Excel はショートサーキットしないので、依然としてエラーを出す
- 配列の力——列全体をテストする——と、
AND/ORが踏み込めない場所
考え方の軸:判断者ではなく、票の集計係
AND と OR を、挙手の集計だと思ってください。各引数は1人の投票者で、TRUE なら
手を挙げ、FALSE なら手を下ろしたまま。AND は「全員一致か?」を報告します——
誰も手を下ろしていないときだけ TRUE。OR は「誰か1人でも?」を報告します——
少なくとも1つ手が挙がっていれば TRUE。
=AND(B2>=60, C2="Yes", D2<100) ' 3つすべてが通ったときだけ TRUE
=OR(B2>=90, C2="VIP") ' どちらか一方が通れば TRUE
これが関数のすべてです。条件でいっぱいの部屋を受け取り、1つの TRUE/FALSE に
畳み込む。結果を選んだり、ラベルを表示したり、アクションを起こしたりはしません——
自分の唯一の結論を、頼んできた相手に手渡すだけです。この絵を持てば、次のルールは
自明になります:AND/OR が結論しか生まないのなら、それを使う何かが別に必要だと。
第1のルール:IFのテストの中に住む、周りではない
人がまず手を伸ばしがちなのは、ネストしたIFの塔です。けれど本当に必要だったのは、
単一の IF の中に入った1つの AND でした。
' ネストのピラミッド — 動くが、読みにくく編集しにくい
=IF(B2>=60, IF(C2="Yes", "Pass", "Fail"), "Fail")
' テストの中の AND — きれいな分岐点ひとつ
=IF(AND(B2>=60, C2="Yes"), "Pass", "Fail")
どちらも同じ答えを出しますが、2つ目は言いたいことを正確に述べています——「合格には
両方が真でなければならない」——を1行の読みやすい式で。ここが肝心な分業です:
AND/OR が条件を計算し、IF が結果を計算する。
「両方とも真でなければならない2つのことがある」というだけの理由で IF をネストしている
自分に気づいたら、必要なのはより大きな IF ではなく——第1引数の中の AND です。
同じ組み合わせテストは、そのまま条件付き書式のルールや
FILTER の条件にも落とし込めます。IF は不要です。
「〜の間」は AND、「どちらか」は OR(人が取り違えるやつ)
いちばん頻発するロジックエラーは、範囲テストで間違ったつなぎ手に手を伸ばすことです。
「値が10と20の間か」は、両方とも成り立たなければならない2つの条件です——
これは OR ではなく AND です。
=IF(AND(A2>=10, A2<=20), "In range", "Out") ' 正しい — 間
=IF(OR(A2>=10, A2<=20), "In range", "Out") ' 誤り — 常に TRUE
OR 版は常に TRUE です:どんな数も 10以上 か 20以下 のどちらか(多くは両方)
だからです。OR は「これらのいずれかのバケツに属する」——OR(Region="EU", Region="UK") のように、条件が本当に択一のとき——のために取っておきます。手早い
確認法:同じ値に対して2つのテストが逆方向を指しているなら、ほぼ間違いなく AND
が欲しいはずです。
素の数式の意外な結果:セルにただ TRUE と出る
セルに単独で =AND(B2>=60, C2="Yes") と打つと、Excel は関数が約束したとおりのことを
します——結論、つまり TRUE か FALSE という文字そのものを表示するのです。
=AND(B2>=60, C2="Yes") ' セルには TRUE (または FALSE)と表示される
これはバグではありません。関数が設計どおりに働いているだけです。それは判断の
ステップを忘れたという合図です。結果の列に生の TRUE が出ているなら、ほぼ確実に
「これを IF(かルール)で包むつもりだったのに、しなかった」という意味です。直し方は
AND を変えることではなく——その結論に消費者を与えることです。
プログラマーの罠:Excelはショートサーキットしない
VBA、Python、C から来たなら、AND が最初の FALSE で止まると期待するでしょう——
A2<>0 AND B2/A2>1 は A2 が 0 のとき決して割り算をしないはず、と。Excel は
そうは動きません。 AND と OR はまとめる前にすべての引数を評価するので、
割り算はやはり走り、やはりエラーになります。
=IF(AND(A2<>0, B2/A2>1), "OK", "No") ' A2=0 -> それでも B2/0 を計算 -> #DIV/0!
ここには AndAlso/&& のようなガードはありません。危険な計算を守るには、
ネストしなければなりません——外側の IF にガードを置き、危険な部分に決して
到達させないのです。
=IF(A2=0, "No", IF(B2/A2>1, "OK", "No")) ' A2=0 なら割り算の前に分岐で止まる
これは、ネストが正しくて AND が誤りである唯一のケースです。ある引数が、別の
引数が偽のときにエラーを出しうるなら、AND/OR はあなたを守れません——外側の IF
(か、最後の手段として IFERROR のラッパー)が
守ります。
配列の力——そして AND/OR がぶつかる壁
どちらの関数も範囲を受け取れて、AND(A2:A100>0) は列全体が正であるかを一発で
テストします——「すべて有効か?」という単一のチェックのための、本当に便利なのに
見過ごされがちな一手で、今どきの Excel ではスピルします。
けれどここが、その性質が牙を剥く場所でもあります。AND/OR はすべてを1つの
結論に畳み込むので、行ごとのマスクを組み立てるのに使うことはできません。これは
一見もっともらしいですが、間違いです。
=SUMPRODUCT((Region="EU") * AND(Amount>0)) ' 誤り — AND が配列を1つの値に潰す
各行ごとに TRUE/FALSE が必要なとき——SUMPRODUCT、
SUMIFS、FILTER
の背後にあるエンジンです——は、AND/OR を捨てて、ブール配列に対する算術を代わりに
使います:AND には *、OR には +。
=SUMPRODUCT((Region="EU") * (Amount>0), Amount) ' * = 行ごとの AND
=FILTER(Data, (Region="EU") + (Region="UK")) ' + = 行ごとの OR
覚え方:条件の集合について1つの答えが欲しいなら AND/OR、行ごとに1つずつ
答えが欲しいなら */+。この2つを混同するのが、「配列数式が単一の数値を返して
しまう」という質問の半分の元凶です。
大文字小文字を無視する意外な点、IFと同じ
AND/OR の中の比較は Excel のいつもの = を使い、これは大文字小文字を無視
します——C2="yes" は "Yes"、"YES"、"yes" のどれにも同じように一致します。
たいていは助かりますが、ときには困ります。大文字小文字を区別するテスト(ID と
id のようなコードの照合)なら、比較を EXACT で
包みます。
=IF(AND(EXACT(C2,"Yes"), B2>=60), "Pass", "Fail") ' "Yes" だけ、"yes" ではない
判断:AND/OR か、ネストしたIFか、+/* マスクか
3つの形、1つの判断です。
- IF の中の
AND/OR— 「N個の条件、1つの結果」の既定。読みやすく、編集しやすく、 ほとんどすべてで正しい。 - ネストしたIF — 後のテストが、前のテストが偽のときにエラーを出しうる場合 (ショートサーキットのケース)、あるいは分岐が本当に別々の問いを尋ねる場合だけ。
- ブール配列への
+/*—SUMPRODUCT、SUMIFS、FILTER、スピル結果へ渡す ために、行ごとの結論が必要なとき。
腕の見せどころは関数を暗記することではありません——問題の形から、この3つのうち今 自分が手にしているのがどれなのかを見抜くことです。
ExcelMaster の使いどころ
ビジネスルールは文として届きます——まだ承認されていない、EUかUKの、1,000ドル超の
注文にフラグを立てる——AND と OR が入り混じって、逆さまに組みやすい代物です。
ExcelMaster はその一文を正しい構造に変えます:フラグが1つ欲しいなら IF の中の
AND/OR、同じロジックで SUMIFS や FILTER を駆動しなければならないなら */+
の配列マスク。あなたは条件を平易な言葉で述べるだけ。「常に TRUE」や迷子の #DIV/0!
を静かに返さない形を、こちらが選びます。
よくある質問
ExcelのANDとORの違いは?
AND はすべての条件が真のときだけ TRUE を返し、OR は少なくとも1つが真の
とき TRUE を返します。「これらがすべて成り立たなければならない」(「XとYの間」を
含む)には AND、「これらのどれか1つで十分」には OR を使います。
ExcelでANDをIFと一緒に使うには?
AND を IF の第1引数に入れます:=IF(AND(B2>=60, C2="Yes"), "Pass", "Fail")。
AND が1つの TRUE/FALSE の結論を生み、IF がそれを2つの結果に変えます。条件
ごとに別々の IF をネストしてはいけません。
AND の数式がただ TRUE か FALSE と表示されるのはなぜ?
それが AND の返すすべて——結論——だからです。その結論に対して動く何かで包むのを
忘れています。IF の中に入れる(=IF(AND(...), "Yes", "No"))か、条件付き書式や
データ入力規則のルールとして使ってください。
ExcelのAND関数は他の言語のようにショートサーキットする?
しません。Excel はすべての引数を評価するので、AND(A2<>0, B2/A2>1) は A2 が
0 でも依然として A2 で割り、#DIV/0! を生みます。危険な計算を守るには、AND に
頼らず外側の IF の中にネストします。
行ごとの条件で AND と OR を組み合わせるには?
IF の中ならネストできます——AND(x, OR(y, z))。けれど(SUMPRODUCT、SUMIFS、
FILTER のために)各行の結果が必要なときは、ブール配列に算術を使います:AND には
*、OR には +。例:(Region="EU") * (Amount>0)。
検証環境
検証環境: Excel 365(Windows 11)— 最終確認 2026-07-04。
関連ガイド: ExcelのIF関数 · ExcelのIFS & SWITCH関数 · ExcelのIFERROR関数 · ExcelのSUMPRODUCT関数 · ExcelのFILTER関数
