制御構文とステートメントの「If条件文」は、構文・文法よりも条件の絞り方がより重要です。
抽出したい要素を回り道せずに引き出せるように条件文を記述できるようにしましょう。
基本部分を最速で解説します。
エクセルVBAのコード組み立てで最も必要な、最もよく使うメソッドの1つで「If~Then~Else」があります。
今回はこの「If~Then~Else」メソッドについて設定条件の絞り方のポイントを説明します。
こんにちは、じゅんぱ店長(@junpa33)です。
コンテンツ
「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演算子
この概念図をイメージしていると分かり易いです。
単一条件判断
①.全体「か」の中で「あ」の条件に合うものを取り出す。

全体の中で、抽出条件が「あ」の要素だけですので、「If条件文は1つ」だけでOKです。
3の倍数を取り出します。
If V Mod 3 = 0 Then Ans = "3の倍数"
全体「か」の中で「あ」以外が欲しい時でも「If条件文は1つ」だけでOKです。
3の倍数以外を取り出します。
If V Mod 3 <> 0 Then Ans = "3の倍数でない"
複数条件判断
②.全体「か」の中で「あ」「い」「う」「え」の条件に合うものを取り出す。

先ほどの①の単一条件判断で、順番に「あ」「い」「う」「え」と繰り返してもOKです。
ここでは条件分岐を使って、一つのIf条件文で作ってみます。
「あ」を営業課、「い」を総務課、「う」を業務課、「え」を人事課、「か」は全社
営業課には佐藤さん、総務課には柴田さん、業務課には鈴木さん、人事課には瀬戸さん、全社には園田さんがいます。
If V = "佐藤" Then
Ans = "営業課"
ElseIf V = "柴田" Then
Ans = "総務課"
ElseIf V = "鈴木" Then
Ans = "業務課"
ElseIf V = "瀬戸" Then
Ans = "人事課"
ElseIf V = "園田" Then
Ans = "全社"
Else
Ans = "全社"
End If
各課のメンバーを重複しない名前で登録しておくことで、変数のVにメンバー名を代入すれば、所属部署が判明します。
③.全体を「あ」「い」「う」「え」に分ける。

②のパターンと似ています。
この③は全体が限られた要素で構成されているパターンです。
「月別カレンダー」とか「干支」とか「性別」などがあります。
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余るグループ"
④.全体「か」の中で「あ」「い」の条件に合うものを取り出す。

「あ」のなかに「い」が入っています。つまり「い」は「あ」の要素も持っているということです。
「か」「あ」「い」はそれぞれ、”科目” と ”点数” の情報を持っています。
「あ」の集合体を条件抽出をします。「あ」の条件は数学で有るかどうかだけです。
V1は科目についての要素、V2は点数についての要素になります。
If V1 = "数学" Then
Ans1 = "「あ」科目"
End If
「い」の集合体の条件抽出は、「あ」の中から60点以上の条件での抽出になります。
If V1 = "数学" Then
Ans1 = "「あ」科目"
If V2 > 59 Then
Ans2 = "「い」グループ"
End If
End If
⑤.全体「か」の中で「い」の条件に合うものを取り出す。

「あ」と「う」の重なった要素が「い」になります。「あ」でもあって「う」でもあるということです。
「あ」の条件から始める
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
⑥.「あ」と「え」以外の「お」の条件に合うものを取り出す。

全体の中で「あ」も「え」も満たしていない集合体「お」を取り出します。
「And演算子」を使って考えると、
If V <> "営業課" And V <> "人事課" Then
Ans = "それ以外の課"
End If
「Or演算子」「Not演算子」を使って考えると
If Not (V = "営業課" Or V = "人事課") Then
Ans = "それ以外の課"
End If
「If条件文」条件の絞り方のまとめ
If条件文は、文法的にはそんなに難しくはありません。
難しいのは、条件の絞り込み方です。
「どういう風に条件付けをすれば、最短で必要部分を抽出できるのか。」
ここの部分が一番の肝になるところです。
何回も使っていると、イメージとして条件選別が見えてくると思います。
色々なパターンを試してみるのもいいかもしれません。
短期間でエクセルVBAの独学習得を目指したいなら
エクセルVBAを独学する独習方法は、学習者それぞれ十人十色、多種多様と思われます。
けれども、
出来るだけ効率よく学習するためには、いくつかの大切なポイントがあります。
独学でもVBA習得の中級クラスに達するのはそんなに難しいことではありません。
先人が行った勉強方法をあなたがそのまま利用すればよいということです。
独習のための大切な7つのポイントは、上記記事にて解説しています。
独習によるVBA習得のキーワードは、
出来るだけ多くの実例に触れること!
です。
正直、VBAの学習について自分の周りの仕事(業務)からだけ実例を得るのでは効率良い習熟は無理です。
ハッキリ言って、
本当に短い期間でVBA習得を成功させたいなら、今使っている参考書が良書かどうかを判断し、新ツールとしてオンライン学習も取り入れて行うことが、
手っ取り早く短期間習得できるというのは間違いないでしょう。
このサイトでよく使うVBAのコードのトピックを纏めています。
今回の記事はここまでです。 最後までご覧いただき有難うございました。