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

猫男

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

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

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

catman
IFを重ねて使えば、3段階評価も簡単にできるぞ!
よし、IF関数の複数条件、これでバッチリ使いこなせそうです!

猫男
じつは…GASならもっと効率的にできる!
でも行が増えると関数書くの大変だし、コピーしてもズレることあるし…うまく管理できないかな…

猫男

catman
そんなときは、Google Apps Script(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[2]; // B列: テスト点数
const attendance = row[3]; // C列: 出席率
return (score >= 80 && attendance >= 90) ? "合格" : "不合格";
});
// D列に書き出し
sheet.getRange(2, 4, results.length, 1).setValues(results.map(r => [r]));
}
このスクリプトでは、スプレッドシートの行をループして「複数条件」に基づいて「合格 or 不合格」をD列に一括出力しています。
おおお、これなら大量のデータも一発で判定できちゃう…!

猫男

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