基本のIFステートメントの書き方
条件分岐と言うと難しそうに聞こえますが、IF文を使うときは頭の中で日本語に変換しながら書くと分かりやすいです。
条件分岐とは、簡単に言うと「もし○○だったら××をする」という意味になります。
「もしも」は「IF」で「だったら」は「Then」に置き換えて考えてみます。
さいごは「EndIf」で締めくくり、IF文はここまでですよ、というのを書いておきます。
これを念頭に置きつつ、条件式○○と処理××を実際の処理に当てはめていきます。
「もしA1セルの値が「30」だったら、B1セルに「〇」と出力する」
という処理の場合は下のようになります。
A1セルの値が30の時はB1セルに「〇」と表示され、A1セルが30以外の場合は何も出力されません。
条件に一致しない場合の処理を書きたい場合は「Else」(その他の場合)を使用します。
下の例はA1セルの値が「30」の場合はB1セルに「〇」を出力し、A1セルの値が「30」ではない場合は「×」を出力します。
A1セルの値が30以上の場合は「△」、50以上の場合は「〇」を出力して、それ以外を「×」としたい場合は、2つ目の条件判定を「EsleIf 条件式」で書いてつなげていきます。
3つ以上判定することも可能です。
Ifステートメントで複数条件(OR条件:どちらかに一致)を使う方法
次はOR条件を使用して、条件①または条件②のどちらかに当てはまる場合に処理を実行する、というIF文を書いていきます。
(条件①)A1セルの値が1の場合、または(条件②)A1セルの値が2の場合、B1セルに「〇」を出力します。(どちらも一致しない場合は「×」を出力。)
OR条件はつなげて書くことで3つ以上でも判定することが可能です。
横につなげて書くと読みにくくなってしまうので「 _」半角スペースとアンダースコアでコード内を改行して下のように書くと条件が複数あることが分かりやすいです。
Ifステートメントで複数条件(AND条件:どちらも一致)を使う方法
次はAND条件を使用して、複数の条件すべてに当てはまる場合に処理を実行する、というIF文を書いていきます。
(条件①)A1セルの値が10以上、で且つ(条件②)A1セルの値が20以下、B1セルに「〇」を出力します。(一致しない場合は「×」を出力。)
OR条件と同様にAND条件も3つ以上つなげて書くことも可能です。
Ifステートメントで使用する比較演算子
Ifステートメントで条件式に使用する比較演算子をまとめました。
比較演算子 | 意味 |
A = B | AとBが等しい |
A <> B | AとBが等しくない |
A < B | AがBより小さい |
A > B | AがBより大きい |
A <= B | AがB以下 |
A >= B | AがB以上 |
比較演算子以外にもIS演算子などを使用して、値を判定することも可能です。
それぞれ別の記事で詳しく書いていますので参考にしてください。
もし値が日付だったら「IsDate(文字列)」
もし値が数値だったら「IsNumeric(文字列)」
もし特定の文字列が含まれる場合「InStr(文字列, “探したい文字列”)」
行ループ内でIF文で判定する方法
1行ずつ行をループし、繰り返し処理を行う中でIF文で判定していく方法について説明します。
下の例では1行目~10行目まで10~100までの値が入っています。
値が30以下の場合は「×」、30より大きく70以下の場合は「△」、70より大きい場合は「〇」と出力していきます。
サンプルマクロで実行している内容
① 1行目~10行目まで繰り返す
② A列の値が30以下の場合、B列に「×」を出力する
③ A列の値が70以下の場合、B列に「△」を出力する
④ その他の場合、B列に「〇」を出力する
Sub sample1()
'1行目~10行目まで繰り返す…⓵
For i = 1 To 10
'A列の値が30以下の場合…⓶
If Cells(i, 1) <= 30 Then
'B列に結果を出力
Cells(i, 2) = "×"
'A列の値が70以下の場合…⓷
ElseIf Cells(i, 1) <= 70 Then
'B列に結果を出力
Cells(i, 2) = "△"
'その他の場合…⓸
Else
'B列に結果を出力
Cells(i, 2) = "〇"
End If
Next
End Sub
マクロを実行すると下のようになります。
B列に結果が出力されました。
※コードのコピー利用について
・コードのコピーは自由におこなっていただけます。
・気を付けて作成はしていますがコードには誤りがある可能性があります。
・自身の環境で動作確認をしていますが、すべての方の環境で同様に動くことは保証できません。
・データの破損等の責任は負いかねますのでご自身の責任のもとお使いください。