こんにちは、Ryoです。
分岐処理を関数で行う手段としてIIf関数がありますが、Switch関数を利用すると条件1、処理1、条件2、処理2・・・のように複数設定できますので便利です。今回はこの内容について書いていきます。
1.サンプル概要
下表のD列値に対し「150,000以上:緑字、100,000超え:青字、50,000以下:赤字」の条件をSwitch関数で設定して実行します。
実行結果として、条件設定通り100,000を超え150,000未満は青字、150,000以上は緑字、50,000以下は赤字となっています。
以上がサンプル概要になります。
2.サンプルコード
Sub Sample1() Dim num As Long Dim i As Integer Range("D2").Select For i = 1 To 5 'アクティブセルに対する処理 With ActiveCell 'アクティブセルの値を変数numへ代入 num = .Value '条件に応じてアクティブセルのフォント色を変更 '(15万以上:緑、10万超え:青、5万以下:赤) .Font.Color = Switch(num >= 150000, RGB(0, 255, 0), _ num > 100000, RGB(0, 0, 255), num <= 50000, _ RGB(255, 0, 0)) '次行のセルへ移動 .Offset(1, 0).Select End With Next i End Sub
構文:Switch(expr-1, value-1[, expr-2, value-2 … [, expr-n, value-n]])
Switch関数は引数に指定した条件に応じた値や式を返すものです。引数は(条件1,処理1,条件2,処理2,条件3,処理3・・・)の形で記述しますが、条件は先頭の条件1から順次評価し、最初に当てはまった条件に対する処理を実行します。
当てはまった条件以降についても指定された条件はすべて評価されるようですが、処理自体は最初に該当した条件のものになるようです。なのでサンプルコードで15万以上=緑の次に10万超え=青としていても実行結果として15万の値は緑字となります。
3.まとめ
用途によってはIIf関数やSwitch関数を覚えておくと簡単に分岐処理を行うことができるので有用だと思います。
複雑な条件指定を扱うには難しいですが、単純な条件分岐であれば活用できる機会は多いかと思いますので利用できそうなケースがあればぜひ。
以上、複数条件を設定し関数で分岐処理をおこなう方法についてでした!今回の記事が何かの参考になれば幸いです。
Ryo