「If条件文」のVBAコードの組み方。条件の絞り方を最速に理解。

vbaifjyokeneyecatch

制御構文とステートメントの「If条件文」は、構文・文法よりも条件の絞り方がより重要です。

抽出したい要素を回り道せずに引き出せるように条件文を記述できるようにしましょう。

基本部分を最速で解説します。

エクセルVBAのコード組み立てで最も必要な、最もよく使うメソッドの1つで「If~Then~Else」があります。

今回はこの「If~Then~Else」メソッドについて設定条件の絞り方のポイントを説明します。

こんにちは、じゅんぱ店長(@junpa33)です。

「If条件文」のVBAコードの組み方。条件の絞り方

エクセルVBAのコード組み立てで、「この列の上から下までの合計を出しましょう。」とか「平均を出しましょう。」とかのコードであれば問題ないですが、

通常は、コードを組み立てる時に、例えば、「1週間のうちの月火水の△△店の売上金額を集計する」とか、当たり前のように付帯条件が付いてくるものです。

「If条件文」とは、欲しい情報のためにそんな条件で、”ふるいにかける” というものになります。

たとえば、これから①から⑥のような設定で、条件の絞り方を考えていきます。

vbaifjyoken001

条件判断する要素を「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 Then100と等しい時
If Range(“A1”).Value > 100 Then100より大きい時
 If Range(“A1”).Value < 100 Then100より小さい時
>=If Range(“A1”).Value >= 100 Then100以上の時
<= If Range(“A1”).Value <= 100 Then100以下の時
<> If Range(“A1”).Value <> 100 Then100でない時

And演算子、Or演算子、Not演算子

演算子状態(概念)
Andvbaifjyoken001_7
Orvbaifjyoken001_8
And + Notvbaifjyoken001_9
Or + Notvbaifjyoken001_10

この概念図をイメージしていると分かり易いです。

単一条件判断

①.全体「か」の中で「あ」の条件に合うものを取り出す。

vbaifjyoken001_1

全体の中で、抽出条件が「あ」の要素だけですので、「If条件文は1つ」だけでOKです。

①の例題
「か」を自然数、条件の集合体「あ」を3の倍数とします。

3の倍数を取り出します。

単一条件①コード1
If V Mod 3 = 0 Then Ans = "3の倍数"

全体「か」の中で「あ」以外が欲しい時でも「If条件文は1つ」だけでOKです。

3の倍数以外を取り出します。

単一条件①コード2
If V Mod 3 <> 0 Then Ans = "3の倍数でない"

複数条件判断

②.全体「か」の中で「あ」「い」「う」「え」の条件に合うものを取り出す。

vbaifjyoken001_2

先ほどの①の単一条件判断で、順番に「あ」「い」「う」「え」と繰り返しても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にメンバー名を代入すれば、所属部署が判明します。

③.全体を「あ」「い」「う」「え」に分ける。

vbaifjyoken001_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余るグループ" 

④.全体「か」の中で「あ」「い」の条件に合うものを取り出す。

vbaifjyoken001_4

「あ」のなかに「い」が入っています。つまり「い」は「あ」の要素も持っているということです。

④の例題
「か」を試験の全科目の全点数、「あ」を数学の全点数、「い」を60点以上の点数とします。

「か」「あ」「い」はそれぞれ、”科目” と ”点数” の情報を持っています。

「あ」の集合体を条件抽出をします。「あ」の条件は数学で有るかどうかだけです。

V1は科目についての要素、V2は点数についての要素になります。

単一条件④コード
If V1 = "数学" Then
      Ans1 = "「あ」科目"
End If

「い」の集合体の条件抽出は、「あ」の中から60点以上の条件での抽出になります。

入れ子④コード
If V1 = "数学" Then
      Ans1 = "「あ」科目"
      If V2 > 59 Then
          Ans2 = "「い」グループ"
      End If
End If

⑤.全体「か」の中で「い」の条件に合うものを取り出す。

vbaifjyoken001_5

「あ」と「う」の重なった要素が「い」になります。「あ」でもあって「う」でもあるということです。

⑤の例題
「あ」は3の倍数、「う」は4の倍数とします。すると「い」は12の倍数となります。

入れ子⑤1コード
「あ」の条件から始める
If V Mod 3 = 0 Then
      Ans1 = "「あ」のグループ"
      If V Mod 4 = 0 Then
          Ans2 = "「い」のグループ"
      End If
End If

入れ子⑤2コード
「う」の条件から始める
If V Mod 4 = 0 Then
      Ans1 = "「う」のグループ"
      If V Mod 3 = 0 Then
          Ans2 = "「い」のグループ"
      End If
End If

「And演算子」を使えば入れ子にしなくても記述が出来ます。

And演算子⑤コード
If V Mod 3 = 0 And V Mod 4 = 0 Then
    Ans = "「い」のグループ"
End If

⑥.「あ」と「え」以外の「お」の条件に合うものを取り出す。

vbaifjyoken001_6

全体の中で「あ」も「え」も満たしていない集合体「お」を取り出します。

⑥の例題
「あ」を営業課、「え」を人事課、「お」はそれ以外の課 と

「And演算子」を使って考えると、

And演算子⑥コード「And演算子」を使うと
If V <> "営業課" And V <> "人事課" Then
      Ans = "それ以外の課"
End If

「Or演算子」「Not演算子」を使って考えると

Or演算子、Not演算子⑥コード「Or演算子」「Not演算子」を使うと
If Not (V = "営業課" Or V = "人事課") Then
      Ans = "それ以外の課"
End If

「If条件文」条件の絞り方のまとめ

If条件文は、文法的にはそんなに難しくはありません。

難しいのは、条件の絞り込み方です。

「どういう風に条件付けをすれば、最短で必要部分を抽出できるのか。」

ここの部分が一番の肝になるところです。

何回も使っていると、イメージとして条件選別が見えてくると思います。

色々なパターンを試してみるのもいいかもしれません。

短期間でエクセルVBAの独学習得を目指したいなら

エクセルVBAを独学する独習方法は、学習者それぞれ十人十色、多種多様と思われます。

けれども、

出来るだけ効率よく学習するためには、いくつかの大切なポイントがあります。

独学でもVBA習得の中級クラスに達するのはそんなに難しいことではありません。

先人が行った勉強方法をあなたがそのまま利用すればよいということです。

独習のための大切な7つのポイントは、上記記事にて解説しています。

重要ワード

独習によるVBA習得のキーワードは、

出来るだけ多くの実例に触れること!

です。

正直、VBAの学習について自分の周りの仕事(業務)からだけ実例を得るのでは効率良い習熟は無理です。

ハッキリ言って、

本当に短い期間でVBA習得を成功させたいなら、今使っている参考書が良書かどうかを判断し、新ツールとしてオンライン学習も取り入れて行うことが、

手っ取り早く短期間習得できるというのは間違いないでしょう。

このサイトでよく使うVBAのコードのトピックを纏めています。

エクセルVBA最速理解で必要な知識を集めよう!

今回の記事はここまでです。   最後までご覧いただき有難うございました。

<記事内容についての告知>VBAコードの記述記事においては、その記述には細心の注意をしたつもりですが、掲載のVBAコードは動作を保証するものではりません。 あくまでVBAの情報の一例として掲載しています。 掲載のVBAコードのご使用は、自己責任でご判断ください。 万一データ破損等の損害が発生しても当方では責任は負いません