更新: 2026年03月 · 6 分で読める · 2,974 文字
スプレッドシートのIF関数で複数条件を処理する実践テクニック
Google スプレッドシートやExcelでIF関数を使う際、複数の条件を組み合わせる必要はよくあります。この記事では、ネストされたIF、AND/OR関数、IFS関数を使い分けることで、複雑な条件判定を効率的に実装する方法を解説します。実務で今すぐ使える具体例とハマりやすいポイントを紹介します。
複数条件のIF処理:3つのアプローチ
スプレッドシートで複数条件を扱う場合、主に3つの方法があります。それぞれの使い分けを理解することが重要です。
1. ネストされたIF関数(IF内にIFを入れる)
最も基本的な方法ですが、条件が増えると可読性が低下します。2〜3個の条件程度に向いています。
=IF(A1>=90, "優", IF(A1>=80, "良", IF(A1>=70, "可", "不可")))
この例では、スコアAA1が90以上なら「優」、80以上なら「良」、70以上なら「可」、それ以外は「不可」と判定します。
2. AND/OR関数との組み合わせ(複数条件が全て/いずれか満たす場合)
「AかつB」「AまたはB」のような複合条件が必要な場合に使用します。
=IF(AND(A1>=80, B1>=80), "合格", "不合格")
この例では、A1とB1の両方が80以上の場合のみ「合格」となります。
=IF(OR(A1="東京", A1="大阪"), "対象地域", "対象外")
こちらは、A1が「東京」または「大阪」であれば「対象地域」、それ以外は「対象外」と判定します。
3. IFS関数(Google スプレッドシート推奨)
Google スプレッドシートで複数条件を扱う場合、最も推奨される方法です。Excel 2019以降でも利用可能です。可読性が高く、メンテナンスが容易です。
=IFS(A1>=90, "優", A1>=80, "良", A1>=70, "可", A1>=60, "合格", TRUE, "不合格")
IFS関数は「条件1, 戻り値1, 条件2, 戻り値2...」という形式で記述します。最後のTRUEは「デフォルト値」として機能し、全ての条件に当てはまらない場合の結果を指定します。
実践例:営業成績判定シート
シナリオ設定
以下の条件で営業担当者を「S評価」「A評価」「B評価」「C評価」に振り分ける想定です:
- 売上が500万以上 かつ 新規顧客数が5件以上 → S評価
- 売上が300万以上 かつ 新規顧客数が3件以上 → A評価
- 売上が200万以上 または 新規顧客数が2件以上 → B評価
- 上記以外 → C評価
IFS関数を使った実装
=IFS(
AND(B2>=5000000, C2>=5), "S評価",
AND(B2>=3000000, C2>=3), "A評価",
OR(B2>=2000000, C2>=2), "B評価",
TRUE, "C評価"
)
B2が売上(数値)、C2が新規顧客数(数値)のセルと想定しています。このように複数の条件を組み合わせることで、複雑な判定ロジックをシンプルに記述できます。
よくあるハマりポイントと解決策
問題1: 条件の順序が重要
IFS関数やネストされたIFは、上から順に条件を評価します。より厳しい条件を先に配置しないと、想定外の結果になります。
=IFS(A1>=60, "合格", A1>=80, "優秀")
この場合、A1が80でも「合格」と判定されてしまいます。必ず厳しい条件から順に配置してください。
問題2: 数値と文字列の型混同
スプレッドシートでは、セルに右寄りで表示されているのが数値、左寄りが文字列です。「"80"」という文字列と80という数値は異なります。比較演算子(>、<など)は数値に対してのみ正確に機能します。
=IF(VALUE(A1)>=80, "合格", "不合格")
文字列を数値に変換する場合はVALUE関数を使用してください。
問題3: 大文字小文字の区別
スプレッドシートのIF関数は「東京」と「東京」を区別します(大文字小文字にも敏感)。テキスト比較では統一することが重要です。
=IF(LOWER(A1)="tokyo", "該当", "非該当")
大文字小文字を気にせず比較したい場合はLOWER関数やUPPER関数で統一してください。
IF関数使用時の最適な場面と非推奨な場面
使うべき場面
- 条件が3個以下で、シンプルな分岐判定
- 売上評価、合格不合格判定などのカテゴリ分け
- 日付や数値の範囲判定
使うべきでない場面
- 条件が5個以上ある場合は SWITCH関数やクエリの利用を検討
- 複雑なビジネスロジックは、スクリプトエディタ(Google Apps Script)で実装
- 大量のデータ処理は、フィルタ機能やピボットテーブルを使用
Google Apps Scriptでの応用
スプレッドシートのUIだけでは複雑すぎる場合、Google Apps Scriptでカスタム関数を作成できます。
function evaluatePerformance(sales, newCustomers) {
if (sales >= 5000000 && newCustomers >= 5) {
return "S評価";
} else if (sales >= 3000000 && newCustomers >= 3) {
return "A評価";
} else if (sales >= 2000000 || newCustomers >= 2) {
return "B評価";
} else {
return "C評価";
}
}
このカスタム関数は、スプレッドシート内で =evaluatePerformance(B2, C2) のように呼び出せます。複雑な条件を扱う場合は、この方法がより保守性に優れています。
公式リファレンス
Google Docsヘルプ:IFS関数で詳細な構文と例が提供されています。
よくある質問
条件が2個の場合はIF関数でも問題ありませんが、3個以上ある場合は IFS関数を推奨します。理由は可読性と保守性です。IFS関数はネストがないため、後から条件を追加・修正する際にミスが少なくなります。
可能です。例えば =IF(AND(OR(A1="東京", A1="大阪"), B1>=100000), "対象", "非対象") のように記述できます。ただし複数ネストは可読性が低下するため、Google Apps Scriptでの実装を検討してください。
IFERROR関数で囲むと、エラー時に指定した値を返すようにできます。例:=IFERROR(IFS(...), "計算エラー")。これにより、不正なデータが入力された場合も適切に処理できます。
まとめ
- 複数条件は IFS関数(Google スプレッドシート)が最適。ネストされたIF関数より可読性が高い
- AND/OR関数と組み合わせることで、「かつ」「または」の複合条件を実装できる
- 条件の順序に注意。より厳しい条件を先に配置することが重要
- 数値と文字列の型混同に注意。必要に応じてVALUE関数で変換する
- 5個以上の複雑な条件は、Google Apps Scriptでのカスタム関数化を検討