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

vbaifjyokeneyecatch

「If条件文」は、構文・文法よりも条件の絞り方がより重要です。

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

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

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

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

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

vbaifjyokenp002

エクセル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です。

例題1

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

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

If V Mod 3 = 0 Then Ans = "3の倍数"

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

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

If V Mod 3 <> 0 Then Ans = "3の倍数でない"

複数条件判断

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

vbaifjyoken001_2

先ほどの①の単一条件判断で、順番に「あ」「い」「う」「え」と繰り返しても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

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

vbaifjyoken001_3

②のパターンと似ています。

この③は全体が限られた要素で構成されているパターンです。

「月別カレンダー」とか「干支」とか「性別」などがあります。

例題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余るグループ"
矢印下001
Else
      Ans = "3余るグループ" 

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

vbaifjyoken001_4

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

例題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

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

例題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

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

vbaifjyoken001_6

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

例題6

「あ」を営業課、「え」を人事課、「お」はそれ以外の課 と「And演算子」を使います。

「And演算子」を使う

If V <> "営業課" And V <> "人事課" Then
      Ans = "それ以外の課"
End If

「Or演算子」「Not演算子」を使う

If Not (V = "営業課" Or V = "人事課") Then
      Ans = "それ以外の課"
End If

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

vbaifjyokenp003

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

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

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

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

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

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

エクセルVBAを独習するのに参考書は欠かせません。 参考書選びは自分に合った「相棒」にできるものを選んでいきたいです。

vbastudyeyecatch2 エクセルVBAの独習でおすすめ参考書を7冊選ぶ。良書との出会いは大切です

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

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

エクセルVBA業務ツールで日常の業務改善を行いましょう。

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