ifs関数の使い方とExcel2013以前の古いエクセルで使う方法
Excel2016の2016年2月アップデートで、
switch関数等とともに
ifs関数が導入されました。
ifs関数とは?
これは、if関数を複数分岐に対応させた関数で、
- 1.書式
-
IFS(条件1,処理1,条件2,処理2,条件3,処理3,…)
- 2.動作
-
- 条件1を満たしたとき→処理1
- 条件2を満たしたとき→処理2
- 条件3を満たしたとき→処理3
- ...
- (全ての条件を満たさないとき)→#N¥A!
というような動作をする関数です。
ifs関数を使うとif関数の入れ子(ネスト)不要
今までは、
if関数で、複数に分岐させたい場合には、
if関数の入れ子(ネスト)にせざるを得ませんでした。
でも、ifs関数を使えば、
単なる複数分岐だけであれば、
if関数の入れ子(ネスト)にする必要はなくなります。
例えば、A1セルに入っている「点数」に応じて、
次のようにA~Fという文字を表示させたい場合には、
- 90点以上・・・A
- 80点以上・・・B
- 70点以上・・・C
- 60点以上・・・D
- 59点未満・・・F
次のような計算式を入力します。
従来のif関数よりも非常に簡単です。
Excel2013、Excel2010、Excel2007等古いエクセルでは使えない
このifs関数は、
最新のExcel2016でしか使えません。
でも、
どうせなら、古いExcelでも使えたら便利だろうな、ということで、
ユーザ定義関数を作ってみました。
Function IFS(ParamArray par())
Dim i As Integer
IFS = CVErr(xlErrNA)
If UBound(par) Mod 2 = 0 Then
Exit Function
End If
For i = LBound(par) To UBound(par) - 1 Step 2
If par(i) Then
IFS = par(i + 1)
Exit Function
End If
Next
End Function
上記ソースを
エクセルVBAの標準モジュールにコピペしてもらえれば、
ほぼifs関数と同じ動きをします。
ただ、1点だけ動きが違う点があります。
- 引数が奇数個の場合
-
引数が奇数個の場合(=条件だけあって、処理がない場合)に、
Excel2016のifs関数は「引数が足りない」エラーが出るが、
上記ユーザ定義関数だと「#N/A!」が出る
ただ、この違いは、
使用する上では、ほとんど支障がないと思います。
ということで、
便利な関数だと思いますので、ぜひ、活用してください!
姉妹版(?)の
switch関数もユーザ定義関数を作りましたので、
合わせてコピペしてもらったうえで、
アドイン登録をしておけば、
Excel2016気分が味わえますよ(^^)。