スプレッドシートの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でのカスタム関数化を検討

動作確認済み環境:Google スプレッドシート(2025年1月)、Microsoft Excel 2021以降

K
AWS・Python・生成AIを専門とするソフトウェアエンジニア。AI・クラウド・開発ワークフローの実践ガイドを執筆しています。詳しく見る →