スプレッドシートのif関数で複数条件!仕事が速くなるコツ

Googleスプレッドシートを使っていて、「もっと複雑な条件でデータを自動的に振り分けたい」と思ったことはありませんか?例えば、「もしAで、かつBなら、Cと表示する」といったように、1つの条件だけでなく、複数の条件を組み合わせて処理したいケースは日常業務の中で頻繁に発生しますよね。私も以前は、単純なif関数しか知らず、複雑なデータ処理が必要なときは手作業で修正したり、諦めて別の方法を探したりしていました。ですが、スプレッドシートのif関数は、工夫次第で複数の条件、さらには3つ以上の条件でも、色を付けたり文字を含ませたりと、柔軟に処理することが可能です。スプレッドシートのif関数で複数条件を使いこなせると、これまで手作業で確認していた作業が自動化され、業務効率が劇的にアップします。この記事では、複数の条件を同時に満たす「AND関数」から、どれか一つを満たす「OR関数」、そして複数の条件をすっきりと記述できる「IFS関数」まで、実際の業務で使える具体的な数式の書き方を解説していきます。この記事を読み終える頃には、どんなに複雑なデータ処理の要望にも、「あ、それif関数でできますよ」と自信を持って答えられるようになりますよ。

if関数で複数条件

それでは、早速見ていきましょう。

  • AND関数を使って、すべての条件を満たす場合の処理方法
  • OR関数を使って、いずれかの条件を満たす場合の処理方法
  • IFS関数を使って、3つ以上の分岐をスッキリと記述する方法
  • チェックボックスや色付けなど、if関数と組み合わせて便利な実践的なテクニック
スポンサーリンク

スプレッドシートのif関数で複数条件を扱う

スプレッドシートのif関数は、単独では「条件が1つ」の場合しか処理できません。しかし、実務では「あれも満たして、これも満たした場合」といった複雑な条件が必要になることがほとんどです。ここでは、if関数と他の関数を組み合わせて、複数の条件を自在に操る方法を紹介します。

and関数で全て満たす条件を指定する

「条件Aも、条件Bも、すべて満たしている場合だけ処理したい」という時に大活躍するのが、AND関数です。AND関数は、指定した条件がすべて「TRUE(真)」の場合にのみ、全体として「TRUE」を返します。

例えば、「過去1年間に購入履歴があり、かつ、プレミアム会員である」というお客様だけを抽出したい場合、if関数の中にAND関数を組み込みます。

=IF(AND(A2="購入あり", B2="プレミアム"), "対象", "対象外")

このように記述することで、両方の条件をクリアした人だけに「対象」と表示させることができます。条件は3つでも4つでも、コンマで区切ってAND関数の中に追加していけばOKです。品質管理や対象者の厳密な絞り込みなど、例外を許さない処理において、AND関数は必須のテクニックと言えます。

or関数でいずれかを満たす条件を作る

AND関数とは逆に、「条件Aか、条件Bの、どちらか一方でも満たしていればOK」という柔軟な処理をしたい場合は、OR関数を使用します。OR関数は、指定した条件のうち1つでも「TRUE(真)」があれば、全体として「TRUE」を返します。

たとえば、「担当者が佐藤さん、または、鈴木さんの場合」にチェックを入れたいとします。この場合、数式は以下のようになります。

=IF(OR(A2="佐藤", A2="鈴木"), "チェック", "")

OR関数を使えば、処理の対象となる入り口を広げることができるため、複数の異なる入力値をまとめて処理したい時に非常に便利です。複数のエラーパターンのどれかに引っかかったら警告を出すといった、フェイルセーフ(安全装置)のような仕組みを作る際にもよく使われます。

ifs関数で3つ以上の分岐を処理する

条件が3つ、4つと増えていくと、従来のif関数の中にif関数を入れる「ネスト」という書き方では、数式が非常に長くて複雑になり、後から見直すのが大変になります。そんな「if地獄」を解決してくれるのが、IFS関数です。

IFS関数は、複数の条件とその結果を、順番に横に並べて書いていくだけで、直感的に分岐処理ができる画期的な関数です。

=IFS(A2>=90, "A", A2>=80, "B", A2>=70, "C", TRUE, "再テスト")

IFS関数の素晴らしいところは、左から順番に条件を評価し、最初に当てはまった時点で処理を終了する点です。つまり、上記の例でA2が85点だった場合、最初の「>=90」は外れますが、次の「>=80」に合致します。ここで「B」という結果が返され、それ以降の条件は無視されます。

IFS関数を使う際の注意点は、「どの条件にも当てはまらなかった場合」の処理を忘れないことです。設定したすべての条件から外れると「#N/A」エラーになってしまうため、最後に「TRUE, “対象外”」といったデフォルト値を設定しておくのが鉄則です。

switch関数で完全一致の条件分岐

「セルの値が『東京』なら『関東』、『大阪』なら『関西』」のように、特定のセルの値が何と完全に一致するかによって結果を振り分けたい場合は、IFS関数よりもSWITCH関数の方が適しているケースがあります。

IFS関数で書くと、毎回「A2=”東京”」「A2=”大阪”」とセルを指定しなければなりませんが、SWITCH関数なら最初に評価するセルを一度だけ指定し、あとは「値」と「結果」のペアを並べるだけで済みます。

=SWITCH(A2, "東京", "関東", "大阪", "関西", "福岡", "九州", "その他")

このように、数式が非常にスッキリとして読みやすくなります。条件分岐の目的が「完全一致によるカテゴリ分け」であれば、迷わずSWITCH関数を選択しましょう。

文字列の部分一致は正規表現を活用する

「セルの中に『PDF』という文字が含まれていたら」のように、完全一致ではなく部分一致で条件分岐させたい場合がありますよね。ExcelではCOUNTIF関数などでアスタリスク(*)を使ったワイルドカードが使えますが、スプレッドシートのif関数の条件式の中では直接使えません。

そこで活躍するのが、REGEXMATCH関数(正規表現)です。この関数を使うと、「特定の文字列が含まれているか」を判定し、TRUEかFALSEで返してくれます。

=IF(REGEXMATCH(A2, "PDF"), "PDFあり", "なし")

さらに高度な使い方として、探したい文字列を別のセル(例えばB2セル)に入力しておき、REGEXMATCH(A2, B2)のように指定すれば、検索するキーワードを動的に変更できる仕組みも作れます。文字列の解析が必要な場面では、最強のツールになりますよ。

スプレッドシートのif関数で複数条件を応用

if関数で複数条件1

ここまでは関数の基本的な組み合わせ方を見てきましたが、実務でif関数が真価を発揮するのは、スプレッドシートの他の機能と連動させたときです。ここからは、業務の効率をさらに一段階引き上げる、応用的な使い方をご紹介します。

チェックボックスと連動した条件分岐

タスク管理などで大活躍する「チェックボックス」ですが、実はif関数と非常に相性が良いのをご存知ですか?

チェックボックスは、視覚的には四角いアイコンですが、内部的にはチェックが入っていれば「TRUE」、外れていれば「FALSE」というデータを持っています。そのため、if関数の条件式で「=TRUE」と書く必要はありません。

A2セルにチェックボックスがある場合、数式はこれだけでOKです。

=IF(A2, "完了!", "まだです")

たったこれだけで、チェックを入れた瞬間に隣のセルの文字が「完了!」に切り替わる、直感的なタスクリストが作れます。冗長な記述を省き、最もシンプルで美しい数式になるため、積極的に活用したいテクニックです。

条件付き書式でセルの色を自動変更する

条件によって文字を変えるだけでなく、「条件を満たしたらセルの色を変えたい」という要望も多いですよね。これもif関数の考え方と「条件付き書式」を組み合わせることで実現できます。

たとえば、「ステータスが『完了』になったら、その行全体の背景色をグレーにする」といった設定が可能です。条件付き書式の「カスタム数式」を使って、条件を記述します。

先ほどのチェックボックスと組み合わせるとさらに強力です。タスクの行にチェックを入れた瞬間に、行全体の色が変わるように設定しておけば、視覚的にも進捗がパッと見てわかるようになり、チーム内での情報共有が格段にスムーズになりますよ。

日付や特定の期間を指定した条件判定

ビジネスにおいて、「期間内の売上かどうか」「締め日を過ぎていないか」など、日付を使った条件分岐は避けて通れません。スプレッドシートにおいて、日付は内部的にはただの「数値(シリアル値)」として扱われています。そのため、不等号(>や<)を使って大小を比較することができます。

「特定の日付から、特定の日付までの間」という期間を指定したい場合は、前半で解説したAND関数の出番です。

「A2の日付が、B2の開始日以上、かつ、C2の終了日以下である」という条件は、以下のように記述します。

=IF(AND(A2>=B2, A2<=C2), "期間内", "期間外")

日付を比較する際によくあるミスが、「以上・以下(>=、<=)」と「より大きい・より小さい(>、<)」の使い間違いです。その日を含めるのか含めないのか、要件定義をしっかり確認してから数式を組み立てるようにしましょう。

エラー回避にはiferror関数が必須

複雑な条件分岐を作っていると、想定外のデータが入力されたり、参照先のデータが空だったりした時に「#N/A」や「#VALUE!」といったエラーが表示されてしまうことがあります。エラーが表示されたままだと、シート全体の見栄えが悪くなるだけでなく、他の計算にも悪影響を及ぼす可能性があります。

プロっぽくスプレッドシートを作るなら、エラーが表示されることをあらかじめ想定して隠すIFERROR関数を必ず使いましょう。

=IFERROR(複雑な数式, "確認してください")

このように、作成したif関数の数式全体をIFERROR関数で囲んであげるだけです。エラーが出た場合は空白にしたり、「確認してください」というメッセージを出したりすることで、システムがパニックになるのを防ぎ、使いやすいシートを維持することができます。

条件分岐が数十個になるような極端に複雑なケースでは、if関数にこだわるのをやめて、VLOOKUP関数などを使って「条件と結果のマスタデータ(表)」を参照する作戦に切り替えるのが、メンテナンス性の高いシートを作る上でのベストプラクティスです。

まとめ:スプレッドシートのif関数で複数条件

いかがでしたでしょうか。今回は、スプレッドシートのif関数で複数条件をスマートに処理する方法について解説しました。

AND関数やOR関数を使った基本的な組み合わせから、IFS関数を使った多岐分岐、そして文字列検索や日付指定まで、if関数は工夫次第で本当に様々なことができます。

「スプレッドシートのif関数で複数条件を指定したい」と感じた時は、あなたがスプレッドシートを単なる表計算から、強力な業務自動化ツールへとレベルアップさせている証拠です。最初は数式が複雑に見えるかもしれませんが、一つ一つの関数の意味を理解して組み合わせていけば、必ず思い通りの処理ができるようになります。

ぜひ、明日からの業務に、今回ご紹介した関数を取り入れてみてくださいね。作業時間が劇的に短縮されるのを実感できるはずです!

タイトルとURLをコピーしました