「スプレッドシートで条件によって表示を切り替えたい」「達成・未達成を自動で判定したい」。こんな場面、仕事でよくありますよね。
手作業で1行ずつ確認して入力するのは大変です。データが増えるたびにやり直すのも非効率ですよね。
そんなときに使うのが、スプレッドシートのIF関数です。この記事では基本の書き方から、AND・ORを使った複数条件、ネストIF(入れ子)まで丁寧に解説します。
スプレッドシートのIF関数とは?条件分岐の基本的な仕組み
IF関数(読み方: イフ関数)は、条件に応じて返す値を切り替える関数です。「IF」は英語の「もし〜なら」に由来しています。
たとえば「売上が目標以上なら”達成”、未満なら”未達”」と表示する処理を考えてみましょう。IF関数を使えば、条件判定から表示まで1つの数式で自動化できます。
IF関数にできることをまとめると、次のとおりです。
- 数値の大小で「達成」「未達」を自動判定する
- 特定の文字列に応じてコメントを出し分ける
- 空白セルかどうかで処理を変える
- 他の関数と組み合わせて複雑な条件分岐にも対応する
「もし〇〇なら△△、そうでなければ××」を自動化する関数、というイメージです。
NOTE
IF関数はGoogleスプレッドシートの全バージョンで使えます。Excelとの互換性もほぼ完全なので、ファイルのやり取りでも安心です。
IF関数の書き方(構文・引数)
基本構文
=IF(論理式, TRUE値, FALSE値)
カッコの中に、条件・TRUEの場合の値・FALSEの場合の値を指定します。
引数の説明
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| 論理式 | 必須 | 判定する条件(例: A2>=100) |
| TRUE値 | 必須 | 条件が成立したときに返す値 |
| FALSE値 | 任意 | 条件が不成立のときに返す値(省略時はFALSE) |
第3引数の「FALSE値」は省略できます。省略すると論理値の FALSE が返ります。ただし実務では省略せずに明示するのが一般的ですよ。
TIP
文字列を返す場合はダブルクォーテーションで囲みます。数値を返す場合は囲みません。
最もシンプルな使用例
B列にテストの点数が入っているとします。70点以上なら「合格」、未満なら「不合格」と表示してみましょう。
=IF(B2>=70, "合格", "不合格")
- B2>=70(論理式): B2が70以上かを判定
- “合格”(TRUE値): 条件が成立したら表示する文字列
- “不合格”(FALSE値): 条件が不成立なら表示する文字列
B2が85なら「合格」、60なら「不合格」が返ります。
ExcelのIFとの違いはほぼなし
IF関数の基本動作はExcelとまったく同じです。構文も引数の順番も一致しています。
| 項目 | Googleスプレッドシート | Excel |
|---|---|---|
| 基本構文 | 同じ | 同じ |
| 引数の順番 | 論理式, TRUE値, FALSE値 | 論理式, TRUE値, FALSE値 |
| FALSE値の省略 | FALSEを返す | FALSEを返す |
| ネスト上限 | 制限なし(実質) | 64階層 |
ExcelのIF関数に慣れている方は、同じ書き方でそのまま使えますよ。
実務でよく使うIF関数の使い方3選
基本がわかったところで、仕事でよく使うパターンを紹介します。
売上達成・未達成を自動判定する(営業向け)
A列に担当者名、B列に売上金額、C列に目標金額が入っているとします。売上が目標以上なら「達成」、未満なら「未達」と表示します。
=IF(B2>=C2, "達成", "未達")
- B2>=C2: 売上が目標以上かを判定
- “達成”: 条件成立時の表示
- “未達”: 条件不成立時の表示
B2が120,000、C2が100,000なら「達成」が返ります。この数式を下方向にコピーすれば全員分を一括判定できますよ。
申請ステータスに応じてコメントを表示する(総務・人事向け)
B列に申請ステータス(「承認済」「却下」など)が入っているとします。「承認済」なら「処理完了」、それ以外なら「要確認」と表示します。
=IF(B2="承認済", "処理完了", "要確認")
文字列を条件にする場合もダブルクォーテーションで囲みます。大文字・小文字は区別されません。
ステータスが「承認済」のときだけ「処理完了」になります。「却下」「保留」「未提出」はすべて「要確認」と表示されます。
金額の大小で処理を分ける(経理向け)
B列に経費金額が入っているとします。10,000円以上なら「要承認」、未満なら「自動承認」と表示します。
=IF(B2>=10000, "要承認", "自動承認")
B2が15,000なら「要承認」、5,000なら「自動承認」が返ります。経費申請の承認フローを可視化したいときに便利ですよ。
複数条件のIF関数|AND・ORの使い分け
IF関数は単体だと条件を1つしか指定できません。複数の条件を組み合わせるにはAND関数やOR関数を使います。
AND条件(〜かつ〜)の書き方
AND関数(読み方: アンド関数)は、英語の「AND(かつ)」に由来しています。すべての条件が成立したときにTRUEを返す関数です。IF関数の論理式にAND関数を入れて使います。
たとえば「国語が80点以上」かつ「数学が80点以上」の場合に「合格」と表示してみましょう。B列に国語、C列に数学の点数が入っているとします。
=IF(AND(B2>=80, C2>=80), "合格", "不合格")
B2が85、C2が90なら「合格」です。B2が85、C2が70なら「不合格」です。どちらか一方でも条件を満たさなければ「不合格」になります。
AND関数には条件を3つ以上指定することもできます。
=IF(AND(B2>=80, C2>=80, D2>=80), "合格", "不合格")
OR条件(〜または〜)の書き方
OR関数(読み方: オア関数)は、英語の「OR(または)」に由来しています。いずれか1つでも条件が成立すればTRUEを返す関数です。
「国語が80点以上」または「数学が80点以上」の場合に「合格」と表示します。
=IF(OR(B2>=80, C2>=80), "合格", "不合格")
B2が70、C2が90なら「合格」です。どちらか一方が80点以上であれば「合格」になります。B2が70、C2が60なら「不合格」です。
AND/ORどちらを使うか迷ったときの判断フロー
迷ったときは次の基準で判断してみてください。
- すべて満たす必要がある → AND関数を使う
- どれか1つ満たせばよい → OR関数を使う
日本語で考えるとわかりやすいです。「〜かつ〜」ならAND、「〜または〜」ならORです。
| パターン | 使う関数 | 例 |
|---|---|---|
| 売上100万以上 かつ 利益率20%以上 | AND | 両方クリアで「A評価」 |
| 遅刻3回以上 または 欠席2回以上 | OR | どちらかで「要面談」 |
| 在庫あり かつ 単価500円以下 | AND | 両方で「発注不要」 |
NOTE
AND関数・OR関数はARRAYFORMULA(配列数式を展開する関数)と組み合わせられません。配列処理では *(AND相当) や +(OR相当) の演算子を使います。
IF関数のネスト(入れ子)で3段階以上に分岐する
IF関数の中にIF関数を入れることを「ネスト」と呼びます。2択では足りないときに使います。
ネストIFの書き方と実例
B列にテストの点数が入っているとします。90点以上を「A」、70点以上を「B」、それ未満を「C」と3段階で評価します。
=IF(B2>=90, "A", IF(B2>=70, "B", "C"))
処理の流れは次のとおりです。
- B2が90以上か? → YESなら「A」を返す
- NOなら次のIF関数へ → B2が70以上か? → YESなら「B」を返す
- NOなら「C」を返す
B2が95なら「A」、80なら「B」、60なら「C」です。
4段階にする場合はもう1段ネストします。
=IF(B2>=90, "A", IF(B2>=70, "B", IF(B2>=50, "C", "D")))
TIP
ネストする際は、条件を大きい方から順に判定するのがコツです。小さい方から書くと条件が複雑になりやすいので注意してください。
ネストが深くなったらIFS関数に切り替えよう
ネストが3段階以上になると数式が読みにくくなります。そんなときはIFS関数への切り替えがおすすめです。
IFS関数(読み方: イフス関数)は、IFを複数(Plural)扱えることを示す「S」を付けた名称です。「条件と値のペアを並べるだけ」で複数分岐を書けます。
=IFS(B2>=90, "A", B2>=70, "B", B2>=50, "C", TRUE, "D")
ネストIFと同じ結果が得られますが、構造がフラットで読みやすいですよね。
| 比較項目 | ネストIF | IFS関数 |
|---|---|---|
| 書き方 | IFの中にIFを入れる | 条件と値のペアを並べる |
| 可読性 | 3段階以上で読みにくい | フラットで読みやすい |
| デフォルト値 | 最後のFALSE値で指定 | 末尾に TRUE, “値” で指定 |
| 全条件不一致 | FALSE値が返る | #N/Aエラーになる |
IFS関数ですべての条件に一致しない場合は#N/Aエラーが返ります。末尾に TRUE, “デフォルト値” を入れておけば回避できますよ。
IF関数でよくあるエラーと対処チェックリスト
IF関数で思った結果にならないケースをまとめました。
TRUE・FALSEが表示される
「達成」「未達」と表示したいのに、TRUEやFALSEが表示されるケースです。
原因はTRUE値・FALSE値の指定忘れです。次のように論理式だけを書いた場合に起こります。
=IF(B2>=100)
この数式ではTRUE値・FALSE値が未指定です。そのため条件の判定結果(TRUE/FALSE)がそのまま表示されます。
正しくは次のように書きます。
=IF(B2>=100, "達成", "未達")
TRUE値とFALSE値の順番が逆になっている
条件が成立したときの値(TRUE値)と、成立しなかったときの値(FALSE値)を逆に書くと、意図しない結果になります。
× =IF(B2>=100, "未達", "達成")
○ =IF(B2>=100, "達成", "未達")
「達成のつもりが未達と表示される」という場合は、第2引数と第3引数の順番を確認してください。
文字列を返すときのダブルクォート忘れ
文字列をダブルクォーテーションで囲み忘れるとエラーになります。
× =IF(B2>=100, 達成, 未達)
○ =IF(B2>=100, "達成", "未達")
文字列は必ず ” で囲んでください。数値を返す場合は不要です。
=IF(B2>=100, 1, 0)
括弧の数が合わない
ネストIFを書くとき、開き括弧と閉じ括弧の数が合わないとエラーになります。
× =IF(B2>=90, "A", IF(B2>=70, "B", "C")
○ =IF(B2>=90, "A", IF(B2>=70, "B", "C"))
ネストが深くなるほど括弧を数え間違えやすくなります。3段階以上のネストはIFS関数への切り替えを検討してみてください。
#VALUE!が表示される
数式の型や構文に誤りがあると#VALUE!エラーが発生します。セルの表示形式が「文字列」に設定されていると、数値として扱われず比較が正しく機能しないことがあります。
セルの書式を「数値」または「自動」に変更してから数式を入力し直してみてください。
IFERROR関数でエラー表示をきれいに消す
IF関数自体はエラーを出しにくい関数です。ただし他の関数と組み合わせると#N/Aや#VALUE!が出ることがあります。
IFERROR関数は、数式がエラーを返した場合に代わりの値を表示する関数です。
=IFERROR(IF(B2/C2>=1, "達成", "未達"), "データなし")
C2が0や空白の場合、B2/C2で#DIV/0!エラーが発生します。IFERROR関数で囲めば「データなし」と表示できます。
エラーを放置すると見た目が悪く、集計にも影響します。ユーザーの目に触れるシートでは積極的に使ってみてください。
まとめ|IF関数をマスターして次のステップへ
IF関数のポイントをおさらいしましょう。
- IF関数は「条件に応じて返す値を切り替える」関数
- 書き方: =IF(論理式, TRUE値, FALSE値)
- 文字列を返すにはダブルクォーテーションで囲む
- 複数条件はAND関数(かつ)・OR関数(または)で対応
- 3段階以上の分岐はネストIF、またはIFS関数で対応
- TRUE/FALSEが表示されたらTRUE値・FALSE値の指定漏れを確認
まずは基本の =IF(B2>=100, “達成”, “未達”) から試してみてください。条件分岐ができると、データの自動判定がグッとラクになりますよ。
IF関数に慣れたら、条件付きの集計関数にもチャレンジしてみましょう。
