ヒガサラblog

サラリーマン向けに、仕事を効率良く進めていくための方法についてご紹介しています。プログラミングから対人スキルまでを幅広く掲載中。

ヒガサラblog

【VBA】分岐条件の基本を解説!これができればIF文マスター!

f:id:yshgs_elec:20201005224124j:plain

 

「VBAでIF文を使った分岐条件の基本を勉強したい!」

 

この記事はこんな人のためのものです。

 

VBAに限らずプログラミングをしていると

「AだったらBをしろ!」

「CだったらDをしろ!」

という単純な指示から、

「AとCを同時に満たしたらEをしろ!」

なんてゆう複雑な指示を行うことがあります。

 

この指示をうまく使いこなせるかどうかで、プログラミングの幅は大きく広がります。

 

というわけでこの記事では、VBAでIF文を使ったときの

①単純な分岐条件のやり方

②複数の条件を組み合わせたいときの分岐条件のやり方

についてご説明します。

 

初心者向けに、画像多めで解説していきますので、ぜひ最後までごらんください。

 

それではさっそくやっていきます!

 

単純な条件分岐について

まずは非常にシンプルな

「AだったらBをしろ!」

という条件が一つしかない場合の分岐処理の記述方法についてご紹介します。

 

IF文条件分岐の書き方

以下が基本的な使い方です。

If *** 【不等号】 *** Then

指示コード

End If 

 

不等号は以下のように使用します。

A=B:AとBが等しい場合

A>=B:AがB以上の場合

A<=B:AがB以下の場合

A>B:AがBよりも大きい場合

A<B:AがBよりも小さい場合

 

とはいえ、これだけでは理解しずらいでしょうから次は実際の使用例を見てみましょう。

 

実際の使用例

以下の画像のように、A2セルからA9セルまで、ランダムに数値が入っている条件で、今回のテーマである、IF文での条件分岐演習を行ってみましょう。

f:id:yshgs_elec:20201005215447j:plain

今回はA列の数値が0.5よりも大きければ、B列に【OK】と記入されるようにしてみましよう。

 

早速ですが、以下がその実行コードです。

 

Sub jouken_shiki1()
Dim i As Integer
i = 2
Do Until Cells(i, 1) = ""
If Cells(i, 1) > 0.5 Then
Cells(i, 2) = "OK"
End If
i = i + 1
Loop
End Sub

 

基本的には4行目から6行目までを見ていただければOKです。

Cells(i,1)がA列の各行に入っているデータを表しています。

その数値が0.5よりも大きくなるという条件を

Cells(i,1) > 0.5 という形で記述しています。

 

そしてその条件を満たした場合のみ、B列にOKと記述されるようになっています。

⇒ Cells(i,2) = "OK"

 

以下がこのコードの実行結果です。

f:id:yshgs_elec:20201005220015j:plain

 

きちんとA列の数値が0.5以上の場合のみ、B列にOKと記入されていますね。

 

IF文条件分岐について、なんとなく理解していただけたのではないでしょうか?

 

複数条件での分岐について

次に

「AとBを同時に満たしていたらCをしろ!」

「AとBのどちらかが満たされていたらCをしろ!」

というような条件が複数ある場合での、分岐処理の記述方法についてご紹介します。

IF文条件分岐の書き方

以下が基本的な使い方です。

If *** 【不等号】 ***  【And, Or】*** 【不等号】 *** Then

指示コード

End If 

 

基本的には先ほど紹介した一つの条件分岐を、And もしくは Or を間に置いて繰り返すだけです。

例を挙げてもう少しわかりやすく説明します。

先ほどの***の部分を文字にし、不等号を=とすると、以下のようになります。

 

■And を使った場合

If A  = B  And C = D Then

⇒A=Bかつ、C=Dだった場合

 

■Or を使った場合

If A  = B  Or C = D Then

⇒A=Bまたは、C=Dだった場合

 

という具合になります。

とはいえ、複雑でわかりにくいと思いますので、実際の適用例を見てみましょう。

 

実際の使用例

先ほどと同じように、データの数値を判定してみましょう。

以下の画像のようにA列、B列にそれぞれ数値が入っています。

f:id:yshgs_elec:20201005221717j:plain

 

■まずはA列B列どちらも0.5を上回っている行で、C列にOKと記入されるようにしてみましょう。

どちらもという条件ですので、ここでは条件分岐の中にAndを使います。

 

以下が実際のコードです。

 

Sub jouken_shiki2()
Dim i As Integer
i = 2
Do Until Cells(i, 1) = ""
If Cells(i, 1) > 0.5 And Cells(i, 2) > 0.5 Then
Cells(i, 3) = "OK"
End If
i = i + 1
Loop
End Sub

 

このコードを実行すると以下のようになります。

f:id:yshgs_elec:20201005221703j:plain

 

 きちんとA列、B列がどちらも0.5を上回っている行だけに、OKの文字が記入されていることがわかります。

 

■次はA列B列どちらかが0.5を上回っている行で、C列にOKと記入されるようにしてみましょう。

どちらか、という条件ですので 条件分岐の中にOr使います。

 

基本的には先ほどのコードの中のAnd をOr に書き換えるだけです。

以下が実際のコードです。

 

Sub jouken_shiki2()
Dim i As Integer
i = 2
Do Until Cells(i, 1) = ""
If Cells(i, 1) > 0.5 Or Cells(i, 2) > 0.5 Then
Cells(i, 3) = "OK"
End If
i = i + 1
Loop
End Sub

 

 このコードを実行した結果が以下になります。

f:id:yshgs_elec:20201005222218j:plain

 

Andを使った場合と違い、3行目や5行目もOKになっていますね。

どちらか一方が0.5よりも大きくなっていれば・・・という条件分岐がしっかりと機能していることがわかると思います。

 

というわけで、複数条件を指示する場合は、ひとつひとつの指示をAnd、もしくはOrをつなげてあげれば良いということがおわかりいただけたのではないでしょうか。

 

終わりに

というわけで今回はVBAにおけるIF文の条件分岐方法についてご紹介しました。

このスキルはIF文だけでなく、様々な条件判断の際に活用できるものです。

基本中の基本スキルですので、ぜひやり方をマスターしておきましょう!

 

このように、このブログでは、エクセル(VBA)を中心に、様々な業務効率化スキルを紹介しています。

■業務の生産性を上げたい。

■早く帰って子供と遊びたい。

こんな人はぜひ他の記事も読んでみてください。

 

また、VBAを使ってこんなことがしたいんだけど、やり方がわからない、という悩みを抱えているかたは、お気軽にコメント欄から質問してください。

私にわかる範囲であればご協力いたしますので。(もちろん無料です。)

 

最後に・・・

このブログを応援してあげても良いよ、という方は以下のボタンをポチっていただけると嬉しいです。

にほんブログ村 IT技術ブログ VBAへ
にほんブログ村

にほんブログ村 IT技術ブログへ
にほんブログ村

 

Twitterもやっていますので、興味があれば覗いてみてください。

それではまた!!

 

 オススメ記事

www.higashisalary.com

www.higashisalary.com