earthpg:GAS専門のプログラミングスクール

【スプレッドシート】IF関数で複数条件を扱う方法!AND・ORの使い方も徹底解説


スプレッドシートで IF 関数に条件を2つ以上入れたいんですけど、どう書いたらいいんでしょうか…?
猫男
猫男
catman
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
catman

IFを重ねて使えば、3段階評価も簡単にできるぞ!

まとめ

  • ANDで「すべての条件」を確認できる
  • ORで「いずれかの条件」が真になるかを確認できる
  • 複雑な条件は入れ子のIFで対応可能

よし、IF関数の複数条件、これでバッチリ使いこなせそうです!
猫男
猫男
catman
catman

その意気だ!また何か困ったら、catmanに聞くんだぞ!

IF関数 × 複数条件をスプレッドシート風に解説!


文字だけじゃイメージ湧きにくいかも…実際のシートでどうなるか見てみたいです!
猫男
猫男

🎓 例:AND条件で「合格」か「不合格」を判定

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

名前 テスト点数 (A列) 出席率 (B列) 判定 (C列)
さとし 85 95 合格 ✅
カスミ 75 92 不合格 ❌
タケシ 82 88 不合格 ❌

このように、A列とB列の両方が基準を満たしていれば「合格」と表示します。

💡使用する関数:

=IF(AND(A2>=80, B2>=90), "合格", "不合格")
catman
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
catman

見た目で理解できるとグッとわかりやすくなるよな!次は入れ子のIF関数にも挑戦してみようぜ!

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


でも行が増えると関数書くの大変だし、コピーしてもズレることあるし…うまく管理できないかな…
猫男
猫男
catman
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
catman

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