条件
AND関数の使い方・読み方
読み方:AND は「アンド」と読みます。(一般的な読み方です。公式に読み仮名の定めはありません)
ANDは、指定したすべての条件を満たすかどうかを判定する関数です。「かつ」の判定に使います。
このページの中身(23項目)
この記事の書式と対応環境の出どころ(2026-08-26 確認)
- Google スプレッドシート ヘルプ:公式の書式は
AND(論理式1, 論理式2)
https://support.google.com/docs/answer/3093301 - Microsoft サポート:AND 関数
https://support.microsoft.com/ja-jp/excel/functions/and-function
関数の仕様は追加・変更されることがあります。書式が合わないときは、上の公式ページで最新をご確認ください。
すべて満たせば TRUE、1つでも外れれば FALSE を返します。

書式
=AND(条件1, 条件2, ...)
条件はいくつでも並べられます。
基本の動き
=AND(A2 >= 80, B2 >= 80)
A2もB2も80以上なら TRUE、どちらかが79以下なら FALSE です。
AND単体では TRUE / FALSE としか表示されないので、実務ではほぼ IF の中で使います。
=IF(AND(A2 >= 80, B2 >= 80), "合格", "不合格")

条件は3つ以上でもいい
=IF(AND(A2 >= 80, B2 >= 80, C2 >= 80, D2 = "提出済"), "合格", "不合格")
引数を並べるだけで条件が増えます。数値と文字列の判定を混ぜても構いません。
範囲での指定に注意
ANDは範囲を渡すこともできます。
=AND(A2:A10 >= 80)
これは「A2からA10のすべてが80以上か」を判定します。便利ですが、空白セルが含まれると意図しない結果になります。空白は0として扱われるため、1つでも空欄があると FALSE になります。
入力途中のデータで使うと誤判定するので、範囲指定は結果を確認してから使ってください。
実用例
期間内かどうかを判定する
=IF(AND(A2 >= DATE(2026,4,1), A2 <= DATE(2027,3,31)), "今年度", "対象外")
日付は「以上」と「以下」の2つで挟むのが基本形です。片方だけだと期間になりません。
数値が範囲内かを判定する
=IF(AND(A2 >= 10, A2 < 100), "2桁", "対象外")
「10以上100未満」を1つの式で書けます。境界をどちらに含めるかは >= と > の使い分けで決まるので、境界の値でテストしてください。
複数の必須項目が埋まっているか
=IF(AND(A2<>"", B2<>"", C2<>""), "入力完了", "未入力あり")
<>""(空欄でない)を並べます。3つとも埋まっていれば完了です。
項目が多いなら COUNTA のほうが短く書けます。
=IF(COUNTA(A2:F2) = 6, "入力完了", "未入力あり")
項目が5つを超えたらCOUNTAに切り替える、というのが実用的な目安です。
条件付き書式で使うとき
ANDは条件付き書式との相性が良く、行全体に色を付ける用途でよく使われます。
複数の条件を満たす行だけを目立たせたい場合、ANDで条件をまとめて指定します。このとき重要なのが、参照の書き方です。行全体に色を付けたいなら、列だけを固定して行は固定しません。こうすることで、行ごとに判定が動きます。
固定を間違えると、すべての行が同じ判定結果になるか、まったく色が付かないかのどちらかになります。うまくいかないときは、まず条件式をシート上のセルに書いて、行ごとに正しい真偽値が出るかを確かめてください。確認できてから条件付き書式に移すと、原因の切り分けが早くなります。
もう一点、条件付き書式は表示のたびに評価されます。条件が複雑だったり、対象範囲が広かったりすると、動作が重くなることがあります。範囲は必要な部分に絞ってください。
具体的な設定手順は、条件付き書式の記事にまとめています。→ 条件付き書式で行全体に色を付ける方法
ANDが最も活きるのは条件付き書式です。「カスタム数式」に次のように入れます。
=AND($D2 = "未処理", $E2 < TODAY())
「未処理」かつ「期限切れ」の行だけを赤くする、という指定になります。
列を $ で固定し、行は固定しないのがポイントです。これで行全体に書式が適用されます。ここを間違えると1セルだけ色が付いたり、全行が同じ判定になったりします。
掛け算で代用できる
ANDは配列に対してうまく働かないため、SUMPRODUCT や配列を扱う数式の中では掛け算 * で代用します。
=SUMPRODUCT((A2:A100 >= 80) * (B2:B100 >= 80))
TRUE は1、FALSE は0として扱われるため、掛け算の結果が1になるのは両方 TRUE のときだけです。掛け算がANDに相当するわけです。
同様に、足し算は OR に相当します。
ORとの使い分け
| やりたいこと | 使う関数 |
|---|---|
| すべて満たす | AND |
| どれか1つでも満たす | OR |
組み合わせることもできます。
=IF(AND(A2>=80, OR(B2="東京", B2="大阪")), "対象", "対象外")
「80点以上、かつ、東京または大阪」という判定です。入れ子が深くなったら、途中結果を別セルに出すと検証が楽になります。
範囲を渡したときの挙動に注意する
ANDでもっとも多い誤りが、条件に範囲を渡してしまうことです。ある列のすべてが基準を満たしているか調べたい、という意図で範囲を書くと、環境によって結果が変わります。
本来ANDは、個別の条件を並べて受け取ることを想定しています。三つの条件を渡せば、三つすべてが真のときだけ真を返します。ここに範囲を渡すと、範囲内のすべての値を条件として評価する動きになります。意図と一致する場合もありますが、空白セルや文字列が混ざっていると解釈が変わり、想定と違う結果になります。
列全体が基準を満たしているかを判定したいなら、件数を数える方法のほうが確実です。基準を満たす件数と、全体の件数が一致すれば、すべてが満たしていることになります。この書き方なら、空白や文字列の扱いも自分で決められます。
逆に、行ごとの判定をしたいのに範囲を渡してしまうケースもあります。この場合は、その行のセルだけを個別に指定してください。範囲ではなく単独のセルを並べる形が正しい書き方です。
判定したいのが「行ごと」なのか「列全体」なのかを最初にはっきりさせると、この種の混乱は起きなくなります。
条件が増えたときの整理
条件が三つ四つと増えてくると、数式が横に長くなって読めなくなります。読めない数式は、後から直せない数式です。整理の方法をいくつか持っておくと役立ちます。
もっとも単純なのは、判定を分けることです。条件のまとまりごとに作業列を用意し、それぞれで真偽値を出しておきます。最終的な判定は、その作業列を組み合わせるだけになります。数式は短くなり、どの条件で外れたのかも一目で分かります。表が汚れるという抵抗はありますが、列は非表示にできます。
次に、数式の中で改行する方法があります。条件ごとに行を分けると、構造が見えやすくなります。動作は何も変わりません。共有するファイルでは、これだけでも受け取る側の負担が変わります。
三つ目に、条件の順番を工夫する方法があります。もっとも絞り込みの効く条件を先に書くと、読み手が全体像を掴みやすくなります。処理の速度そのものは変わりませんが、意図が伝わりやすくなります。
四つ目に、条件を表に外出しする方法があります。判定の基準が変わる可能性があるなら、基準値をセルに置いて参照するようにします。数式を触らずに基準を変えられるので、運用が楽になります。
掛け算で置き換えられる理由
真偽値は、内部的には一と零として扱われます。真が一、偽が零です。この性質を使うと、ANDの代わりに掛け算が書けます。
条件を掛け合わせると、どれか一つでも偽であれば零になり、すべてが真のときだけ一になります。ANDとまったく同じ結果です。
この書き方が役に立つのは、配列を扱う関数の中です。条件に合う行を抽出する関数や、条件付きで集計する関数では、行ごとの真偽値の並びを条件として渡します。ANDは複数の値をまとめて一つの真偽値にしてしまうため、行ごとの判定が消えてしまいます。掛け算なら、行ごとの結果がそのまま並びとして残ります。
したがって、単独のセルに対する判定ならAND、配列に対する行ごとの判定なら掛け算、という使い分けになります。この違いを知らないと、抽出や集計の数式が思ったように動かず、原因が分からないまま時間を使うことになります。
同じ理屈で、または条件は足し算で書けます。どちらかが真なら一以上になるためです。
判定の結果を再利用する
複数の条件を組み合わせた判定は、一度作ったら他の場所でも使い回せる形にしておくと効率が上がります。
作業列に真偽値を出しておけば、その列を条件付きの集計、抽出、条件付き書式のすべてで使えます。同じ条件式を三箇所に書く必要がなくなります。
条件が変わったときも、作業列の数式を一箇所直すだけで、すべての処理に反映されます。三箇所に散らばっていると、直し漏れが起こります。
さらに、作業列があると確認が容易になります。判定が正しいかどうかを、行ごとに目で確かめられます。数式の中に埋め込まれていると、この確認ができません。
作業列の見出しには、何を判定しているのかを書いてください。「対象」「要確認」「期限切れ」。見出しがあるだけで、他人が見たときの理解が変わります。
不要になった作業列は削除せず、非表示にしておくほうが安全です。他の数式が参照している可能性があります。削除すると参照が壊れます。
条件の記述を業務のルールに合わせる
数式の条件は、業務のルールを表現したものです。ルールと数式が一致していないと、正しく見える誤りが生まれます。
たとえば「三万円以上」というルールを、三万円より大きいと書いてしまうと、ちょうど三万円の行が対象から外れます。境界の扱いは、必ずルールを確認してください。
「営業日」というルールも曖昧です。土日を除くのか、祝日も除くのか、年末年始はどうか。関数の既定の動作が業務のルールと一致しているとは限りません。
「今月」も注意が必要です。暦月なのか、締め日で区切った月なのか。二十日締めの業務では、暦月で集計すると数字が合いません。
「未完了」の定義も確認してください。完了フラグが立っていないものすべてなのか、着手済みのものだけなのか。
こうした確認を怠ると、数式は正しく動いているのに結果が業務と合わない、という状態になります。原因が数式ではなくルールの解釈にあるため、いくら数式を見直しても見つかりません。
数式を書く前に、条件を日本語で書き出してください。境界と例外を明示した文章にしてから、数式に翻訳する。この手順を踏めば、解釈の誤りに早く気づけます。
「条件」の関数を全体から見る
条件に含まれる関数を、全体から見ておきます。同じカテゴリの関数は、つまずく場所も似ています。この記事のほかに14本あります。
このカテゴリで共通するつまずき
文字列は引用符で囲む必要があります。囲み忘れが最も多い間違いです。1つで理解した内容は、同じカテゴリの他の関数にもそのまま使えます。
どれを使うかの決め方
分岐が3つを超えたら、数式ではなく対応表を引く形にしてください。関数の一覧を眺めて選ぼうとすると、どれも当てはまるように見えて決まりません。
迷ったときは
→ 全関数の一覧 に目的別の索引があります。
数式を書く前の手順
手順を分けると、どこで詰まっているかが分かります。
1. 出したい結果を一文で書く
「何を、どの条件で、どんな形で出したいか」。この一文が書ければ、関数はほぼ決まります。書けないなら、まだ要件が固まっていません。
2. 元データの型を確認する
文字列は引用符で囲む必要があります。囲み忘れが最も多い間違いです。=ISNUMBER(A2) で数値かどうかを確認できます。見た目が同じでも、数値と文字列は別物です。
3. 空欄と0の扱いを決める
未入力なのか、実績が0なのか。表の意味が変わります。どちらとして扱うかを決めてから書いてください。
4. 条件の数を数える
分岐が3つを超えたら、数式ではなく対応表を引く形にしてください。将来条件が増える可能性があるなら、最初から複数条件に対応する形にしてください。
5. 共有先の環境を確認する
新しい関数は、古い環境で開くとエラーになります。社外に渡すファイルでは、この一点で選択肢が変わります。
6. 1行だけ書いて確認する
全行にコピーする前に、1行分の結果が正しいかを見てください。間違ったまま広げると、直す手間が増えます。
どの関数でも共通する確認
以下は、どの関数を使っていても同じです。
参照を固定したか
下方向にコピーする数式では、動いてはいけない参照を固定します。上の数行だけ見て判断しないでください。ずれは下のほうで表面化します。
範囲の行数が揃っているか
複数の範囲を渡す関数では、行数がずれると結果が狂います。エラーにならず値が返るため、気づきにくい種類の間違いです。
型が揃っているか
=ISNUMBER(A2)
数値として入っているかを判定します。システムから書き出したデータでは、これが原因のことが多くあります。
前後に空白が入っていないか
=LEN(A2)&" / "&LEN(TRIM(A2))
数が違えば、余分な空白が入っています。見た目では判別できません。
別の方法で検算したか
同じ数字を別の関数でも出して、突き合わせてください。1つの結果だけを見ても、正しいかどうかは判断できません。
最終行まで確認したか
一番下までスクロールして、結果を見てください。途中から値が変わっていないかを確認します。
引き継ぐときに残すこと
数式は動いていても、意図は残りません。渡す前に、次の点をシート内にメモしてください。3分で終わります。
何を出している数式か
一行で構いません。読めば分かると思っても、数か月後の自分には分かりません。
どの表を参照しているか
参照先のシート名と、更新の担当。別ファイルなら、その場所も書いてください。
該当しないときの扱い
空欄にしているのか、文言を出しているのか、エラーのまま残しているのか。書いていないと、受け取った側は空欄をデータなしと読みます。
触ってはいけない場所
列を挿入すると壊れる数式がある場合、必ず書き残してください。この一行があるだけで、引き継ぎ後の事故が大きく減ります。
使った関数の対応環境
新しい関数を使っている場合、古い環境では開けません。共有の範囲が広がる可能性があるなら、明記してください。
確定した期間は値にする
締めた月の集計は、値貼り付けにしてください。参照元を消しても壊れなくなり、ファイルも軽くなります。
このサイトの収録状況
全201本を、次のカテゴリに分けて収録しています。
| カテゴリ | 記事数 |
|---|---|
| 目的別 | 51本 |
| 集計 | 47本 |
| 文字列 | 31本 |
| 日付 | 19本 |
| 検索・参照 | 15本 |
| 条件 | 15本 ←この記事 |
| 機能 | 12本 |
| 配列・抽出 | 10本 |
| 関数一覧 | 1本 |
探し方の順番
関数名が分かっているなら検索窓から。やりたいことだけ決まっているなら「目的別」から。近い関数を比べたいなら、同じカテゴリの一覧から入ってください。
記事の構成
どの記事も、書式・実例・つまずきやすいところ・似た関数との使い分けを同じ順番で並べています。1本読めば、他の記事も同じ場所を探せます。
よくある質問
Q. 条件はいくつまで書けますか
実用上、困らない数を指定できます。ただし多すぎると読めなくなるので、四つを超えたら作業列に分けることを検討してください。
Q. 空白セルはどう扱われますか
数値として比較すると零として扱われます。意図しない判定になることがあるので、先に空白かどうかを判定して除外するのが確実です。
Q. 文字列の比較で大文字と小文字は区別されますか
区別されません。区別したい場合は、文字列を厳密に比較する関数と組み合わせてください。
Q. 結果をそのまま表示できますか
できます。真か偽かがそのまま返ります。IFで包む必要はありません。
Q. NOTと組み合わせられますか
できます。全体を否定することも、個別の条件を否定することもできます。ただし否定が重なると読みにくくなるので、条件そのものを書き換えられないか検討してください。
Q. 抽出の条件に使えません
配列に対する行ごとの判定では、ANDではなく掛け算を使ってください。
Q. ORとの使い分けは
すべてを満たす必要があるならAND、どれか一つでよいならORです。混在する場合は括弧で優先順位を明示してください。→ OR関数の使い方
Q. スプレッドシートとExcelで違いはありますか
基本的な動作は同じです。ただし配列を扱う場面での挙動には差があるため、ファイルを移す予定があるなら確認してください。
まとめ
- 書式は
=AND(条件1, 条件2, ...) - すべて満たしたときだけ
TRUE - 実務では IF の中か、条件付き書式で使う
- 期間・範囲の判定は「以上」と「以下」で挟む
- 配列の中では掛け算
*で代用する
関連する関数
AND でつまずきやすいところ
範囲をそのまま渡している
=AND(A2:A10>0) は「全部が0より大きいか」を1つの答えで返します。
行ごとに判定したいなら、行ごとに書くか、
=ARRAYFORMULA(...)(スプレッドシート)で広げます。
1つの答えしか返らないので、条件付き書式では意図と違う結果になりがちです。
条件付き書式で使うときの参照
行全体に色を付けるなら、列だけ固定します。
=AND($C2="完了",$D2>=100)
$C$2 と行まで固定すると、全行が2行目で判定されます。
色が全部付くか全部付かないかになったら、ここを疑ってください。
空欄が TRUE になる
=AND(A2<>"完了") は、A2が空欄のときも TRUE です。
「未完了」を数えたいのに空行まで入る、という形で効いてきます。
=AND(A2<>"",A2<>"完了") のように、空欄を先に外します。
AND を使わずに書く
条件が2つまでなら、掛け算のほうが短く書けます。
=SUMPRODUCT((A2:A100="東京")*(B2:B100>=100))
掛け算は AND と同じ意味になります(両方1のときだけ1)。 足し算は OR と同じです。 SUMPRODUCT の中では、この書き方が定番です。
件数を数えるだけなら COUNTIFS、 合計なら SUMIFS が読みやすく、速くもあります。 AND が要るのは、条件付き書式やIFの中で判定するときです。