スプレッドシートのIF関数を複数条件にする方法 〜 AND・ORの使い方も徹底解説 〜

スプレッドシートで IF 関数に条件を2つ以上入れたいんですけど、どう書いたらいいんでしょうか…?
猫男
猫男
catman
catman
ふふふ…複数条件のIF関数こそ、catmanの得意分野!ANDやORを使えば解決できるぞ。

スプレッドシートのIF関数で複数条件を扱う方法

Googleスプレッドシートで複数条件を IF 関数に組み込むには、以下の2つを使います。

  • AND(すべての条件が真)
  • OR(いずれかの条件が真)

以下のようなスプレッドシートを想像してください。

スプレッドシート IF関数 複数条件

 

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

 

じつは…GASならもっと効率的にできる!

でも行が増えると関数書くの大変だし、コピーしてもズレることあるし…うまく管理できないかな…
猫男
猫男
catman
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
catman
関数で1セルずつ組むよりも、スクリプトで一括処理した方がスマートな場合も多いぞ。君もGASで自動化の一歩を踏み出そう!