「If条件文」は、構文・文法よりも条件の絞り方がより重要です。
抽出したい要素を回り道せずに引き出せるように条件文を記述できるようにしましょう。
こんにちは、じゅんぱ店長(@junpa33)です。
エクセルVBAのコード組み立てで最も必要な、最もよく使うメソッドの1つで「If~Then~Else」があります。
今回はこの「If~Then~Else」メソッドについて設定条件の絞り方のポイントを説明します。
コンテンツ
「If条件文」のVBAコードの組み方。条件の絞り方
エクセルVBAのコード組み立てで、「この列の上から下までの合計を出しましょう。」とか「平均を出しましょう。」とかのコードであれば問題ないですが、
通常は、コードを組み立てる時に、例えば、「1週間のうちの月火水の△△店の売上金額を集計する」とか、当たり前のように付帯条件が付いてくるものです。
「If条件文」とは、欲しい情報のためにそんな条件で、”ふるいにかける” というものになります。
たとえば、これから①から⑥のような設定で、条件の絞り方を考えていきます。
条件判断する要素を「V」とします。
「If条件文」の基本の文法
「If条件文」の記述方法は基本的にこの3パターンになります。
パターン1
If 条件式 Then 条件を満たした場合の処理
パターン2
If 条件式 Then
条件を満たした場合の処理
Else
条件を満たさなかった場合の処理
End If
パターン3
If 条件式A Then
A条件を満たした場合の処理
Else if 条件式B Then
B条件を満たした場合の処理
Else if 条件式C Then
C条件を満たした場合の処理
Else
条件を満たさなかった場合の処理
End If
比較対象をつなぐ演算子
比較演算子
比較演算子 | 例示 | 意味 |
---|---|---|
= | If Range(“A1”).Value = 100 Then | 100と等しい時 |
> | If Range(“A1”).Value > 100 Then | 100より大きい時 |
< | If Range(“A1”).Value < 100 Then | 100より小さい時 |
>= | If Range(“A1”).Value >= 100 Then | 100以上の時 |
<= | If Range(“A1”).Value <= 100 Then | 100以下の時 |
<> | If Range(“A1”).Value <> 100 Then | 100でない時 |
And演算子、Or演算子、Not演算子
演算子 | 状態(概念) |
---|---|
And | |
Or | |
And + Not | |
Or + Not |
この概念図をイメージしていると分かり易いです。
単一条件判断
全体の中で、抽出条件が「あ」の要素だけですので、「If条件文は1つ」だけでOKです。
例題1
「か」を自然数、条件の集合体「あ」を3の倍数とします。
3の倍数を取り出します。
If V Mod 3 = 0 Then Ans = "3の倍数"
全体「か」の中で「あ」以外が欲しい時でも「If条件文は1つ」だけでOKです。
3の倍数以外を取り出します。
If V Mod 3 <> 0 Then Ans = "3の倍数でない"
複数条件判断
②.全体「か」の中で「あ」「い」「う」「え」の条件に合うものを取り出す。
先ほどの①の単一条件判断で、順番に「あ」「い」「う」「え」と繰り返してもOKです。
ここでは条件分岐を使って、一つのIf条件文で作ってみます。
例題2
「あ」を営業課、「い」を総務課、「う」を業務課、「え」を人事課、「か」は全社
営業課には佐藤さん、総務課には柴田さん、業務課には鈴木さん、人事課には瀬戸さん、全社には園田さんがいます。
各課のメンバーを重複しない名前で登録しておくことで、変数のVにメンバー名を代入すれば、所属部署が判明します。
If V = "佐藤" Then
Ans = "営業課"
ElseIf V = "柴田" Then
Ans = "総務課"
ElseIf V = "鈴木" Then
Ans = "業務課"
ElseIf V = "瀬戸" Then
Ans = "人事課"
ElseIf V = "園田" Then
Ans = "全社"
Else
Ans = "全社"
End If
②のパターンと似ています。
この③は全体が限られた要素で構成されているパターンです。
「月別カレンダー」とか「干支」とか「性別」などがあります。
例題3
「あ」を余り0、「い」を余り1、「う」を余り2、「え」を余り3の集まりとします。
4で割った余りで自然数を4つのグループ分けをします。
If V Mod 4 = 0 Then
Ans = "割り切れる"
ElseIf V Mod 4 = 1 Then
Ans = "1余るグループ"
ElseIf V Mod 4 = 2 Then
Ans = "2余るグループ"
ElseIf V Mod 4 = 3 Then
Ans = "3余るグループ"
End If
全体の中で4つのパターンのどれかになるので、「余り3のグループ」はこのような記述でもOKです。
ElseIf V Mod 4 = 3 Then
Ans = "3余るグループ"
Else
Ans = "3余るグループ"
④.全体「か」の中で「あ」「い」の条件に合うものを取り出す。
「あ」のなかに「い」が入っています。つまり「い」は「あ」の要素も持っているということです。
例題4
「か」を試験の全科目の全点数、「あ」を数学の全点数、「い」を60点以上の点数とします。
「か」「あ」「い」はそれぞれ、”科目” と ”点数” の情報を持っています。
「あ」の集合体を条件抽出します。「あ」の条件は数学で有るかどうかだけです。
V1は科目についての要素、V2は点数についての要素になります。
If V1 = "数学" Then
Ans1 = "「あ」科目"
End If
「い」の集合体の条件抽出は、「あ」の中から60点以上の条件での抽出になります。
If V1 = "数学" Then
Ans1 = "「あ」科目"
If V2 > 59 Then
Ans2 = "「い」グループ"
End If
End If
「あ」と「う」の重なった要素が「い」になります。「あ」でもあって「う」でもあるということです。
例題5
「あ」は3の倍数、「う」は4の倍数とします。すると「い」は12の倍数となります。
「あ」の条件から始める
If V Mod 3 = 0 Then
Ans1 = "「あ」のグループ"
If V Mod 4 = 0 Then
Ans2 = "「い」のグループ"
End If
End If
「う」の条件から始める
If V Mod 4 = 0 Then
Ans1 = "「う」のグループ"
If V Mod 3 = 0 Then
Ans2 = "「い」のグループ"
End If
End If
「And演算子」を使えば入れ子にしなくても記述が出来ます。
If V Mod 3 = 0 And V Mod 4 = 0 Then
Ans = "「い」のグループ"
End If
全体の中で「あ」も「え」も満たしていない集合体「お」を取り出します。
例題6
「あ」を営業課、「え」を人事課、「お」はそれ以外の課 と「And演算子」を使います。
「And演算子」を使う
If V <> "営業課" And V <> "人事課" Then
Ans = "それ以外の課"
End If
「Or演算子」「Not演算子」を使う
If Not (V = "営業課" Or V = "人事課") Then
Ans = "それ以外の課"
End If
「If条件文」条件の絞り方のまとめ
If条件文は、文法的にはそんなに難しくはありません。
難しいのは、条件の絞り込み方です。
「どういう風に条件付けをすれば、最短で必要部分を抽出できるのか。」
ここの部分が一番の肝になるところです。
何回も使っていると、イメージとして条件選別が見えてくると思います。
色々なパターンを試してみるのもいいかもしれません。
エクセルVBAを独習するのに参考書は欠かせません。 参考書選びは自分に合った「相棒」にできるものを選んでいきたいです。
エクセルVBAの独習でおすすめ参考書を7冊選ぶ。良書との出会いは大切です今回の記事はここまでです。 最後までご覧いただき有難うございました。
<記事内容についての告知>
VBAコードの記述記事においては、その記述には細心の注意をしたつもりですが、掲載のVBAコードは動作を保証するものではりません。 あくまでVBAの情報の一例として掲載しています。 掲載のVBAコードのご使用は、自己責任でご判断ください。 万一データ破損等の損害が発生しても当方では責任は負いません。
アンケートでポイ活しよう!!
アンケートに答えれば答えるほど ”使える” ポイントがたまります。