関数IFSは、データをいくつかの分類にグループ分けしたいとき、もしくは条件に応じて処理を変化させたいときに活用できる関数だ。関数IFを「複数条件に対応させたもの」と考えることもできるだろう。便利な関数ではあるが「偽の場合」の処理をどう指定するかなど、使い方に若干のコツが必要となる。その注意点などを紹介していこう。

関数IFSの基本的な使い方

関数IFSはExcel 2019/2021とMicrosoft 365(旧Office 365)で使用できる関数で、「関数IFを複数条件に対応させたもの」と捉えることができる。特に使い方の難しい関数ではないが、引数が多くなるため、記述ミスを犯しやすいのが難点といえる。また、「条件に合致しない場合」(偽の場合)を指定するときにも若干のテクニックが必要となる。

ということで、今回は関数IFSの「基本的な使い方」と「条件を指定するときの注意点」について紹介していこう。

  • 関数IFSの使い方と注意点

今回は、体脂肪率の測定結果を「低/標準/高」の3つにグループ分けする場合を例に話を進めていこう。体脂肪率の判断基準は諸説あるが、ここでは以下の基準に従ってデータを分類していくことにする。

【男性の体脂肪率】   低:15%未満  標準:15%以上、25%未満   高:25%以上

このグループ分けを関数IFSで実現してみよう。関数IFSの書式は以下のようになっており、「条件」と「その条件を満たすときの処理」を1組にして、2個ずつ引数を指定していくのが基本となる。

◆関数IFSの書式  =IFS(条件1, 処理1, 条件2, 処理2, 条件3, 処理3, …)

具体的な記述例を紹介していこう。まずは、体脂肪率が「15未満」のときに「低」の文字を表示する処理だ。これを関数IFSで記述すると、以下の図のようになる。

  • 「1番目の条件」と「真の場合の処理」

続いて、体脂肪率が「15以上かつ25未満」のときに「標準」と表示する処理を記述する。この条件を文面通りに記述すると「AND(D3>=15,D3<25)」となるが、すでに「15未満」のデータは「1番目の条件」(D3<15)で処理されているため、「15以上」の条件は省略できる。よって、以下の図のように引数を記述すればよい。

  • 「2番目の条件」と「真の場合の処理」

最後に、体脂肪率が「25以上」のときに「高」と表示する処理を記述し、「カッコ閉じる」を入力すると、関数IFSの入力が完了する。

  • 「3番目の条件」と「真の場合の処理」

今回の例では、体脂肪率(D3セル)は16.8なので、

 1番目の条件(15未満)…・合致しない(FALSE)  2番目の条件(25未満)…・合致する(TRUE)

となり、「標準」の文字が表示されることになる。

  • 関数IFSの結果

上図に示した例の場合、すでに「2番目の条件」に合致しているため、「3番目以降の条件と処理」は無視される。このように、関数IFSは「前に記述されている条件」から順番に検証作業を進めていき、条件に合致した処理を実行すると、それ以降の条件・処理を無視する仕組みになっている。

あとは、この関数IFSをオートフィルでコピーするだけだ。さらに「高」と「低」を強調表示する「条件付き書式」を指定すると、以下の図のような結果を得られる。

  • 関数IFSを使った条件分岐の結果

このように、条件に応じてデータを「グループ分け」したい場合などに関数IFSが活用できる。もちろん、各条件の処理に数式を記述して計算方法を条件分岐させることも可能だ。これが関数IFSの基本的な使い方となる。

「関数の引数」ダイアログの活用

関数IFSは、最大で127組の条件・処理を記述できる仕様になっている。とはいえ、引数の数が多くなると記述ミスを犯してしまう可能性も高くなる。このため、「関数の引数」ダイアログを使って関数IFSを入力するのも効果的な手法となる。

Excelの中級者・上級者になるほど「関数の引数」ダイアログを使わなくなる傾向があるが、状況によっては直接入力より便利に活用できるケースもある。先ほどの例を用いて説明していこう。

まずは「=IFS(」の部分まで入力し、「関数の挿入」アイコンをクリックする。

  • 「関数の引数」ダイアログの呼び出し

すると、関数IFSが選択された状態で「関数の引数」ダイアログが表示される。キーワードで関数を検索する必要はない。あとは、それぞれの「条件」と「処理」を順番に入力していくだけだ。

このとき、文字を「"」(ダブルクォーテーション)で囲むのを省略することも可能となっている。真の場合の処理に「表示する文字」だけを入力して「Tab」キーを押すと…、

  • 「1番目の条件」と「真の場合の処理」の指定

その前後に「"」を自動補完してくれる。

  • 前後に「"」が自動補完される

同様の手順で、2番目の「条件」と「処理」、3番目の「条件」と「処理」、…を入力していき、「OK」ボタンをクリックすると…、

  • 2番目以降の条件と処理を入力

関数IFSの入力が完了し、その結果がセルに表示される。

  • 関数IFSの結果

このように関数IFSの入力に「関数の引数」ダイアログを利用すると、

 ・「条件」と「処理」をわかりやすく入力できる  ・「"」の入力を省略できる(自動補完してくれる)

といったメリットを得られる。直接入力で「条件」と「処理」を列記していく場合よりもミスが減り、短時間で入力作業を済ませられるだろう。

あとはオートフィルで関数IFSをコピーするだけだ。なお、すでに入力されている関数を修正するときにも「関数の引数」ダイアログが活用できる。この場合は、関数が入力されているセルを選択して「関数の挿入」アイコンをクリックすればよい。

  • セルを選択し、「関数の挿入」アイコンをクリック

  • 引数が入力された状態で「関数の引数」ダイアログが表示される

「関数の引数」ダイアログは初心者向けの機能ではなく、状況によっては熟練者にも役立つ機能となる。積極的に活用していくとよいだろう。

「それ以外の場合」を指定するには?

関数IFSには「条件を満たさなかった場合」(偽の場合)の処理を指定する引数が用意されていない。このため、「例外となるデータ」があったときに予想外の結果が表示されてしまう恐れがある。

具体的な例を紹介していこう。たとえば、体脂肪率のデータに「空白」や「文字列データ」のセルがあったとしよう。この場合、以下の図のように不適切な結果が表示されてしまう。

  • 「文字列データ」や「空白」が含まれていた場合

こういった不具合に対処するために、「それ以外の場合」の条件を追加する方法を紹介していこう。「それ以外の場合」を指定するときは、最後の条件として「TRUE」を記述すればよい。続いて、「それ以外の場合に実行する処理」を記述する。以下に示した例では、「×」(バツ)の文字を表示する処理を指定している。

  • TRUEを使った「それ以外の場合」の指定

条件にTRUEを指定すると、その条件は必ず「真の場合」として扱われる(参考:第46回の連載)。上図に示した関数IFSの場合、

(1)体脂肪率は「15未満」か?
   →合致する場合は「低」と表示
   →そうでない場合は(2)へ進む
(2)体脂肪率は「25未満」か?
   →合致する場合は「標準」と表示
   →そうでない場合は(3)へ進む
(3)体脂肪率は「25以上」か?
   →合致する場合は「高」と表示
   →そうでない場合は(4)へ進む
(4)条件はTRUE(条件なし)
   →必ず「真の場合」になるので「×」と表示

という流れで関数IFSが実行されることになる。

あとは、この関数IFSをオートフィルでコピーするだけ。これで体脂肪率が数値データでない部分に「×」の文字が表示されるはず、…と思うかもしれない。

  • 関数IFSをオートフィルでコピーした様子

しかし、実際には思い通りの結果になってくれない。続いては、これらの不具合に対処する方法を紹介していこう。

より厳密に条件を指定する方法

Excelは「文字」を「数値」より大きいデータとして扱う仕様になっている(詳しくは第49回の連載を参照)。このため、「データなし」などの文字列データは「25以上」の条件に合致するとみなされ、「高」の文字が表示されてしまう。

こういった不具合を解消するには、条件の指定方法を工夫しなければならない。今回の例では体脂肪率が100を超えることはないため、3番目の条件を「100未満」に変更しても問題は生じない。

  • 「3番目の条件」を変更

すると、それぞれの条件・処理は以下のような流れになる。

(1)体脂肪率が「15未満」なら「低」と表示
(2)体脂肪率が「25未満」なら「標準」と表示
(3)体脂肪率が「100未満」なら「高」と表示
(4)それ以外なら「×」と表示

この場合、文字列データは(1)~(3)の条件に合致しなくなるので、(4)の処理が実行される。試しに、この関数IFSをオートフィルでコピーしてみると、以下の図のような結果が得られる。

  • 関数IFSをオートフィルでコピーした様子

体脂肪率が「文字列データ」のときは「×」と表示されているのを確認できるだろう。その一方で「空白セル」のときは「低」のままになっており、まだ不具合は解消されていない。これは「空白セル」が数値の0(ゼロ)とみなされていることが原因だ。つまり、「15未満」の条件に合致するので「低」と表示されていることになる。

これを改善するには、最初の条件として「0以下」を追加してあげる必要がある。今回は「0以下」のときに「※」と表示する指定を追加した。これで体脂肪率が「空白セル」(ゼロ)や「マイナスの数値」の場合にも対応できるようになる。

  • 「0以下の場合」の条件と処理を追加

この関数IFSをオートフィルでコピーすると、以下の図のような結果を得られる。「空白セル」にも正しく対応できていることを確認できるだろう。

  • 関数IFSをオートフィルでコピーした様子

このように「想定外のデータ」にも対応するには、条件の指定方法を色々と工夫しなければならない。もちろん、必ず「適切な数値データ」が入力されるのであれば、冒頭に示した条件指定でも構わない。状況に応じて対処方法を変更できるように、関数IFSの仕組みを十分に理解しておくとよいだろう。