GoogleスプレッドシートIF関数の使い方!IFS, IFERROR, IFNAまで網羅解説

GoogleスプレッドシートIF関数の解説記事のアイキャッチ画像です。 基本解説

Googleスプレッドシート(以下、スプレッドシート)は、売上管理、顧客リスト、タスク管理など、ビジネスの様々なデータを扱うのに非常に便利なツールです。
しかし、
「データは入力しているけれど、集計や分類は目で見て手作業で行っている」
「特定の条件に合うデータだけ色分けしたり、状況を自動で表示させたりしたい」
といったお悩みはありませんか?

手作業での確認や分類は、時間がかかるだけでなく、ミス(ヒューマンエラー)の原因にもなります。

こうした「もし~なら、こうしたい」という条件に応じた処理を自動化できるのが「関数」です。中でも、IF(イフ)関数とその関連関数は、データ処理を自動化・効率化する上で最も基本的かつ強力なツールです。

この記事では、スプレッドシートの関数を使い始めたばかりの方に向けて、IF関数の基本的な使い方から、複数の条件を扱うIFS関数、エラー処理に役立つIFERROR関数、IFNA関数まで、具体的な使用例を交えてわかりやすく解説します。

IF関数とは?

IF関数は、Googleスプレッドシートにおいて「条件分岐」を行うための最も基本的な関数です。

指定した条件(論理式)が満たされているか(真:True)満たされていないか(偽:False)を判定し、その結果に応じて異なる値や計算結果を表示させることができます。日常の言葉で言うと、「もし(IF)~ならばAを、そうでなければBを表示する」という命令を実行する関数です。

IF関数を使うメリット

  • データ分類の自動化:大量のデータから「合格/不合格」「達成/未達成」「要対応/対応済み」といったステータスを自動で付与できます。
  • レポートの可視化:条件に応じたアラート表示(例:「納期超過」)などを自動化し、データの状況を一目で把握できるようにします。
  • ミスの削減:手作業による判断やデータ入力を減らすことで、入力ミスや判断ミスを防ぎます。

IF関数の基本的な使い方

まずは、IF関数の基本的な書き方(構文)と、具体的な使用例を見ていきましょう。

(1)基本構文

IF関数の基本的な構文(書き方のルール)は以下の通りです。

IF(論理式, 真の場合の値, 偽の場合の値)

それぞれの引数(ひきすう:関数に渡す情報)を見ていきましょう。

① 論理式(条件式)

  • 結果が「真(True)」(=OK)または「偽(False)」(=ダメ)になる条件式を入力します。
  • 多くの場合、「比較演算子」(比較のための記号)を使って記述します。
演算子意味使用例(セルA1を参照する場合)
>より大きいA1 > 100 (A1が100より大きい)
<より小さいA1 < 100 (A1が100より小さい)
>=以上A1 >= 100 (A1が100以上)
<=以下A1 <= 100 (A1が100以下)
=等しいA1 = “東京” (A1が”東京”と等しい)
<>等しくないA1 <> “東京” (A1が”東京”ではない)

ポイント:条件式で「”東京”」のように文字列を扱う場合は、必ず「”」(ダブルクォーテーション)で囲みます。数値の場合は必要ありません。

② 真の場合の値

  • 論理式の結果が「真(True)」だった場合に表示させたい値や、実行したい計算式を入力します。
  • 例:”達成”(文字列を表示)、A1 * 0.1(A1セルの値に10%を掛ける計算)

③ 偽の場合の値

  • 論理式の結果が「偽(False)」だった場合に表示させたい値や、実行したい計算式を入力します。
  • 例:”未達成”、””(空白を表示)、0(ゼロを表示)

(2)使用例:売上目標の達成・未達成を判定する

営業担当者ごとの月間売上(B列)が、設定した目標額(ここでは1,000,000円とします)を達成しているか否かをC列に表示させてみましょう。

セルC2に入力する数式は以下の通りです。

=IF(B2>=1000000, "達成", "未達成")
  • 論理式:B2>=1000000
    • セルB2(担当者の売上)が1,000,000以上かどうかを判定します。
  • 真の場合の値:”達成”
    • 条件(100万円以上)を満たす場合、「達成」という文字列を表示します。
  • 偽の場合の値:”未達成”
    • 条件を満たさない(100万円未満の)場合、「未達成」という文字列を表示します。

入力後、セルC2の右下にある小さな四角(フィルハンドル)をドラッグして下のセル(C3、C4…)に数式をコピーすれば、各担当者の達成状況が自動で表示されます。

【応用】目標額を別セルで管理する(絶対参照)

目標額(1,000,000円)が将来変更になる可能性を考え、F1セルに目標額を入力し、そこを参照するようにしてみましょう。

この場合、セルC2に入力する数式は以下のようになります。

=IF(B2>=$F$1, "達成", "未達成")
  • ポイント:$F$1のように$(ドルマーク)を付けた参照方法を「絶対参照」と呼びます。
  • $F$1と指定することで、数式をC3, C4にコピーしても、参照先が$F$2, $F$3…とずれることなく、常に$F$1セル(目標額)を見続けるよう固定できます。
  • 一方、B2は「相対参照」なので、コピーするとB3, B4…と自動でずれ、各行の売上を参照してくれます。

応用テクニック

IF関数をさらに便利に使うための、2つの定番テクニックを紹介します。

(1)複数の条件を組み合わせる(AND関数・OR関数)

「〇〇 かつ △△の場合」や「〇〇 または △△の場合」のように、複数の条件を組み合わせて判定したい場合は、AND関数やOR関数をIF関数の論理式部分に組み込みます。

  • AND関数:AND(条件1, 条件2, …)
    • すべての条件が真(True)の場合にのみ、全体として真(True)を返します。
    • 例:「売上が100万円以上」かつ「契約年数が3年以上」
  • OR関数:OR(条件1, 条件2, …)
    • いずれか一つの条件でも真(True)の場合に、全体として真(True)を返します。
    • 例:「顧客区分が”新規”」または「購入金額が50万円以上」

例(AND関数):売上(B列)が100万円以上 かつ 契約数(C列)が5件以上 の場合に「優秀」と表示する。

=IF(AND(B2>=1000000, C2>=5), "優秀", "")

(2)3つ以上の条件で分類する(IF関数のネスト)

IF関数は「真の場合」と「偽の場合」の2択しかできません。では、「S・A・B・C」のように3つ以上に分類したい場合はどうすればよいでしょうか?

一つの方法として、IF関数の中にさらにIF関数を入れる「ネスト(入れ子)」というテクニックがあります。

例:売上(B列)に応じて「S・A・B」の3段階でランク付けする。

  • 300万円以上 → “S”
  • 100万円以上 → “A”
  • それ以外 → “B”
=IF(B2>=3000000, "S", 
   IF(B2>=1000000, "A", "B")
 )
  1. 最初のIFで「300万円以上か?」を判定し、真なら”S”を返します。
  2. 偽の場合(300万円未満)の処理として、次のIF関数が実行されます。
  3. 次のIFで「(300万円未満のうち)100万円以上か?」を判定し、真なら”A”、偽なら”B”を返します。

このようにIF関数をネストさせることで、3つ以上の条件分岐が可能になります。

しかし、この方法は条件が増えるほど数式が複雑になり、括弧()の対応が分かりにくくなるという欠点があります。

そこで、より直感的に複数の条件分岐を扱えるIFS関数の使用を推奨します。

【推奨】IFS関数:複数の条件分岐をシンプルに

IFS(イフ・エス)関数は、複数の条件を順番に判定し、最初に見つかった真(True)の条件に対応する値を返す関数です。IF関数をネスト(入れ子)にするよりも、はるかにシンプルに記述できます。

(1)基本構文

=IFS(条件1, 真の場合の値1, [条件2, 真の場合の値2, ...])
  • 条件1を判定し、真なら真の場合の値1を返して処理を終了します。
  • 条件1が偽なら、次に条件2を判定し、真なら真の場合の値2を返します。
  • これが条件の数だけ繰り返されます。

(2)使用例:売上ランク付け(IFネストの例を置換)

先ほどの「S・A・B」の3段階ランク付けをIFS関数で書いてみましょう。

=IFS(B2>=3000000, "S",
     B2>=1000000, "A",
     B2<1000000, "B")
  • 300万円以上 → “S”
  • 100万円以上 → “A”
  • 100万円未満 → “B”

IF関数のネストに比べて、どの条件でどの値が返るのか、一目で分かりやすくなりました。

【ポイント】「それ以外」の指定方法

IFS関数は、どの条件にも当てはまらない場合、#N/Aエラー(該当なしエラー)を返します。

「S」「A」の条件以外はすべて「B」としたい場合、最後の条件としてTRUE(常に真)を使うテクニックが便利です。

=IFS(B2>=3000000, "S",
     B2>=1000000, "A",
     TRUE, "B")
  1. 「300万円以上」なら”S”。
  2. そうでなく「100万円以上」なら”A”。
  3. TRUEは「常に真」を意味するため、上記1, 2に当てはまらなかったものはすべてこの条件に合致し、”B”が返されます。

条件が3つ以上ある場合は、IF関数のネストよりもIFS関数の利用を強くおすすめします。

SWITCH関数:特定の値に応じた分岐をスッキリと

IF関数やIFS関数は「>=100」や「<> “東京”」といった論理条件(大きい・小さい・等しくない など)での分岐を得意としています。

一方、SWITCH(スイッチ)関数は、一つのセルや式の結果が、特定の値と「完全に一致」するかどうかを順番に判定し、一致した場合の値を返す関数です。

IFS関数でも同じことはできますが、SWITCH関数を使うとよりシンプルに記述できるケースがあります。

(1)基本構文

=SWITCH(式, ケース1, 値1, [ケース2, 値2, ...], [デフォルト])
  • :判定の基準となるセルや式(例:A1)
  • ケース1:式の結果と比較したい、完全に一致する値(例:1、”A”、”未着手”)
  • 値1:式の結果がケース1と一致した場合に返す値(例:”対応中”)
  • デフォルト(省略可):どのケースにも一致しなかった場合に返す値(例:”対象外”)

(2)使用例:ステータス番号を日本語に変換する

タスク管理表で、進捗ステータスが番号(B列)で管理されているとします。

  • 1 → “未着手”
  • 2 → “作業中”
  • 3 → “完了”
  • それ以外 → “不明”

これをIFS関数で書くと、以下のようになります。

=IFS(B2=1, "未着手",
     B2=2, "作業中",
     B2=3, "完了",
     TRUE, "不明")

B2=という記述が繰り返されますね。

これをSWITCH関数で書くと、以下のようになります。

=SWITCH(B2,
  1, "未着手",
  2, "作業中",
  3, "完了",
  "不明")

B2という判定対象を最初に1回指定するだけなので、IFS関数よりもスッキリと記述できます。

(3)IFSとSWITCHの使い分け

  • IFS:「売上が100万以上」「納期が3日以内」など、論理条件(範囲や大小比較)で分岐させたい場合に使う。
  • SWITCH:「ステータスが1」「部署名が“営業部”」など、特定の値との完全一致で分岐させたい場合に使う。

エラー処理関数(IFERROR, IFNA)

関数を使っていると、#N/A(該当なし)#DIV/0!(ゼロ除算)といったエラー値が表示されることがあります。これらのエラーをそのままにせず、特定の文字(”計算不可”、”対象外”、空白など)に置き換えて見やすくしたい場合に、IFERROR関数やIFNA関数が役立ちます。

(1)IFERROR関数:すべてのエラーを処理

IFERROR(イフ・エラー)関数は、数式や参照の結果が何らかのエラー(#N/Aを含むすべて)であった場合に、指定した代替値を返す関数です。

基本構文

=IFERROR(値, エラーの場合の値)
    • エラーかどうかをチェックしたい数式やセル参照(例:A1/B1、VLOOKUP(…)など)
  • エラーの場合の値
    • 「値」がエラーだった場合に表示させたい値(例:”計算不可”、0、””(空白)など)
    • 「値」がエラーでなければ、「値」の計算結果がそのまま表示されます。

使用例:進捗率の計算エラーを非表示にする

タスクの進捗率を「完了数(B列)÷ 全体数(C列)」で計算している表があるとします。

もし全体数(C列)が未入力(空白)または0の場合、D列の計算結果は #DIV/0!(ゼロ除算エラー)になってしまいます。

セルD2に入力する数式を、IFERROR関数で囲みます。

=IFERROR(B2/C2, "")
  • :B2/C2(進捗率の計算)
  • エラーの場合の値:””(空白)

これで、B2/C2の計算がエラーになる場合(C2が0や空白)は空白が表示され、エラーでなければ計算結果(進捗率)が正しく表示されます。

(2)IFNA関数:#N/A エラーのみを処理

IFNA(イフ・エヌエー)関数は、数式の結果が #N/A エラー(”Not Available” / 該当なし)の場合にのみ、指定した代替値を返す関数です。

#N/Aは、主にVLOOKUP関数やMATCH関数などで、検索した値が見つからなかった場合に発生する特定のエラーです。

基本構文

=IFNA(値, #N/Aの場合の値)
    • #N/Aエラーかどうかをチェックしたい数式(例:VLOOKUP(…))
  • #N/Aの場合の値
    • 「値」が#N/Aエラーだった場合に表示させたい値(例:”該当なし”、”リストにありません”など)

なぜIFERRORとIFNAを使い分けるのか?

IFERRORはすべてのエラーを処理するため便利ですが、時には意図しないエラー(例:数式自体の入力ミス、参照先の削除による#REF!エラー)まで隠してしまう可能性があります。

VLOOKUP関数などで「検索値が見つからない(#N/A)」ことだけを想定してエラー処理したい場合は、IFNA関数を使う方が安全です。それ以外の予期せぬエラー(#REF!や#NAME?など)はエラーとして表示されるため、数式の問題に気づきやすくなります。

使い分けの目安

  • IFERROR:#DIV/0!エラーなど、発生しうるエラーが明確で、すべてまとめて非表示にしたい場合。
  • IFNA:VLOOKUP関数などで、「見つからない」こと(#N/A)だけをエラーとして処理したい場合。

まとめ

今回は、Googleスプレッドシートの「IF」に関連する主要な関数を解説しました。

  • IF関数
    • 「もし~ならA、でなければB」という基本の条件分岐。
    • =IF(論理式, 真の場合の値, 偽の場合の値)
  • IFS関数
    • 「Aなら甲、Bなら乙、Cなら丙…」と複数の条件をシンプルに記述できる。IFのネスト(入れ子)より推奨。
    • =IFS(条件1, 値1, 条件2, 値2, …)
  • SWITCH関数
    • 「Aが1なら甲、Aが2なら乙…」と、特定の値との一致でシンプルに分岐できる。
    • =SWITCH(式, ケース1, 値1, …, [デフォルト])
  • IFERROR関数
    • すべての種類のエラー(#DIV/0!など)を非表示にしたり、代替値に置き換えたりできる。
    • =IFERROR(値, エラーの場合の値)
  • IFNA関数
    • #N/Aエラー(VLOOKUPで見つからない時など)だけをピンポイントで処理できる。
    • =IFNA(値, #N/Aの場合の値)

これらの関数を使いこなすことで、これまで手作業で行っていたデータ分類、ステータス付け、エラーの修正といった作業を大幅に自動化・効率化できます。まずは簡単な「達成/未達成」の判定などから試してみて、日々の業務改善にお役立てください。

※Googleサービスは、Google LLC の商標であり、この記事はGoogleによって承認されたり、Google と提携したりするものではありません。