いまさら聞けないExcelの使い方講座
【Excel】IF関数 vs IFS関数 vs SWITCH関数! 効率的にエラーを処理できるのはどれ?
2024年6月19日 06:55
定番の処理はどの関数が使いやすい?
数式が入力されている表の中に必要なデータを埋めていく作業がありますよね。集計表や見積表などで前年比を求めたり、VLOOKUP/XLOOKUP関数のように検索値に対応する値を取り出したりするケースです。
この例では「アート文化事業」を下半期から始めたため、上半期の売上は「0」増減率は「#DIV/0!」エラーが表示されています。「0」を割ってしまっているというエラーです。「その他事業」の下半期は未入力のため、「-100.00%」となっています。
このままでも問題ありませんが、エラー値や未集計の部分は空白にしたいこともあるでしょう。IF関数を利用して“空白”や「0」を表示させるのが定番の処理です。IF関数以外に、IFS関数やSWITCH関数を使うこともできます。
どの関数でも同様に処理できますが、自分に合うものを探してみてはいかがでしょうか。エラー処理をしたい時の参考にしてみてください。今回は、IF/IFS/SWITCH関数を使った処理を見比べてみます。
エラーをIF関数で処理する
上記の例では、セルD2には増減率を求める「=(C2-B2)/B2」という数式が入力してあります。計算の対象はセルB2とC2で、セルの内容が空白、または「0」なのかの判断はしていないため、エラー値や不自然な結果が表示されています。
これらの問題を回避できる最も定番の数式は「=IF(OR(B2="",C2=""),"",(C2-B2)/B2)」となります。OR関数は引数に指定した「B2=""」と「C2=""」のいずれかを満たせば「TRUE」を返します。
「セルB2、もしくはC2が空白なら」という条件となります。満たす場合は空白("")、満たさなければ(どちらのセルも空白でなければ)「(C2-B2)/B2」の数式の結果を表示します。
セルD5は「#DIV/0!」エラーが表示されたままです。セルB5は「0」、セルC5は「974」と入力されているため、「セルB5、もしくはC5が空白なら」の条件を満たさずに「(C2-B2)/B2)」が計算された結果です。正しい動作です。
この状況を回避するには、B列の“割られる値”が「0」でないという条件が必要です。OR関数に1つ条件を追加しましょう。
条件を羅列できるIFS関数
IFS関数使って同様の処理を再現してみましょう。IFS関数は複数の条件を指定できるため、OR関数を組み合わせる必要がなく、IF関数よりわかりやすいでしょう。IFS関数の構文は以下の通りです。
どの条件にもあてはまらない場合として「TRUE」と数式を指定します。セルD2の数式は以下のようになります。条件は前から順番に判定されていきます。
=IFS(B2="","",B2=0,"",C2="","",TRUE,(C2-B2)/B2)
SWITCH関数は複数セルの判定には向かない
今度はSWITCH関数を使ってみます。構文は以下の通りです。
実は、複数のセルを対象にした条件判定にSWITCH関数は向きません。あるスコアに対して評価を切り替えるといった1つのセルの値を複数の値と比較する時におすすめの関数です。
今回の例では「セルB2とC2のいずれかが空白、セルB2が「0」の場合」といった条件なので、数式は少し複雑になります。
IF関数の数式と似ていますね。OR関数の結果は「TRUE」もしくは「FALSE」で返されるので、引数[式]に指定する「OR(B2="",B2=0,C2="")」の結果が「TRUE」なら、空白("")を表示、それ以外(FALSE)なら「(C2-B2)/B2)」を計算するとしました。
=SWITCH(OR(B2="",B2=0,C2=""),TRUE,"",(C2-B2)/B2)