【スプレッドシート】IF関数で複数条件を扱う方法!AND・ORの使い方も徹底解説
スプレッドシートで IF 関数に条件を2つ以上入れたいんですけど、どう書いたらいいんでしょうか…?

猫男

catman
ふふふ…複数条件のIF関数こそ、catmanの得意分野!ANDやORを使えば解決できるぞ。
IF関数で複数条件を扱うには?
Googleスプレッドシートで複数条件を IF 関数に組み込むには、以下の2つを使います:
- AND(すべての条件が真)
- OR(いずれかの条件が真)
✅ AND を使う例(すべての条件が当てはまるとき)
たとえば、点数が「80点以上」で、かつ「出席日数が90%以上」の場合に「合格」と表示したいとき:
=IF(AND(A2>=80, B2>=90), "合格", "不合格")
📌 意味:A列が80以上 & B列が90以上のとき「合格」
AND関数って、「全部OKなら合格」ってことですね!

猫男
✅ OR を使う例(どれか1つでも当てはまれば)
たとえば、「国語または数学のどちらか」が80点以上なら「再テスト免除」と表示したいとき:
=IF(OR(A2>=80, B2>=80), "免除", "再テスト")
📌 意味:A列 or B列 のどちらかが80以上なら「免除」
OR関数は「どっちかOKならいいよ」って感じなんですね!

猫男
✅ ネスト(入れ子)を使った応用例
条件がもっと複雑な場合は、IFを入れ子にすることも可能です。
=IF(A2>=90, "S評価", IF(A2>=70, "A評価", "B評価"))
📌 90点以上 → S
📌 70点以上 → A
📌 それ以下 → B

catman
IFを重ねて使えば、3段階評価も簡単にできるぞ!
まとめ
- ANDで「すべての条件」を確認できる
- ORで「いずれかの条件」が真になるかを確認できる
- 複雑な条件は入れ子のIFで対応可能
よし、IF関数の複数条件、これでバッチリ使いこなせそうです!

猫男

catman
その意気だ!また何か困ったら、catmanに聞くんだぞ!
IF関数 × 複数条件をスプレッドシート風に解説!
文字だけじゃイメージ湧きにくいかも…実際のシートでどうなるか見てみたいです!

猫男
🎓 例:AND条件で「合格」か「不合格」を判定
以下のようなスプレッドシートを想像してください👇
名前 | テスト点数 (A列) | 出席率 (B列) | 判定 (C列) |
---|---|---|---|
さとし | 85 | 95 | 合格 ✅ |
カスミ | 75 | 92 | 不合格 ❌ |
タケシ | 82 | 88 | 不合格 ❌ |
このように、A列とB列の両方が基準を満たしていれば「合格」と表示します。
💡使用する関数:
=IF(AND(A2>=80, B2>=90), "合格", "不合格")

catman
ANDは「両方クリア」が条件。85点かつ95%のさとしだけが合格だな!
🎓 例:OR条件で「再テスト免除」判定
名前 | 国語 (A列) | 数学 (B列) | 判定 (C列) |
---|---|---|---|
ヒカリ | 78 | 85 | 免除 ✅ |
シンジ | 65 | 60 | 再テスト ❌ |
ノゾミ | 80 | 70 | 免除 ✅ |
💡使用する関数:
=IF(OR(A2>=80, B2>=80), "免除", "再テスト")
ORなら「どっちかOK」でいいから、少しやさしい条件ですね!

猫男
まとめ
- AND → 両方の条件が真のときに実行される
- OR → どちらか一方でも条件を満たせばOK
- スプレッドシートに関数を使う場合、A2やB2のようにセル参照することを忘れずに!

catman
見た目で理解できるとグッとわかりやすくなるよな!次は入れ子のIF関数にも挑戦してみようぜ!
🎯 実は…GASならもっと効率的にできる!
でも行が増えると関数書くの大変だし、コピーしてもズレることあるし…うまく管理できないかな…

猫男

catman
そんなときは、Google Apps Script(GAS)の出番だ!数式じゃなく、スクリプトで条件判定すれば一括処理できるぞ!
📌 GASで複数条件を一括判定するコード
function checkResults() {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
const data = sheet.getRange(2, 1, sheet.getLastRow() - 1, 3).getValues(); // A2〜Cまで
const results = data.map(row => {
const score = row[1]; // A列: テスト点数
const attendance = row[2]; // B列: 出席率
return (score >= 80 && attendance >= 90) ? "合格" : "不合格";
});
// C列に書き出し
sheet.getRange(2, 4, results.length, 1).setValues(results.map(r => [r]));
}
このスクリプトでは、スプレッドシートの行をループして「複数条件」に基づいて「合格 or 不合格」をC列(D列でもOK)に一括出力しています。
おおお、これなら大量のデータも一発で判定できちゃう…!

猫男
GASを使うメリットまとめ
- 💨 データが多くても高速に処理できる
- 🧠 数式のミスが起きにくい
- 🔁 条件をあとからまとめて変更しやすい

catman
関数で1セルずつ組むよりも、スクリプトで一括処理した方がスマートな場合も多いぞ。君もGASで自動化の一歩を踏み出そう!