【VBA】条件分岐処理をつくろう!【Excel】

Excel_VBA

みなさんこんにちは、現役エンジニアのサメハックです

未経験からWebエンジニアに転職し、
現在正社員として5年働いたのちフリーランスとして独立しました。

1分で理解できるVBA講座シリーズです。

今回はについて学んでいきましょう!

駆け出しエンジニアや未経験の方、
また新入社員を指導する先輩社員にとっても
わかりやすいように解説していきます!

この記事を読むと・・・
  • 1分で条件分岐が作れる
1分で理解できるVBA講座シリーズはじめっ!

前準備

マクロを有効にする

Excelファイルを開き、
ファイル→オプション→トラストセンター→トラストセンターの設定→マクロの設定
という順に進み、
VBAが有効な場合にExcel4.0のマクロを有効にする
という項目にチェックを入れてください。

VBEの起動

Excelファイルを開いた状態でAlt+F11を押してVBEを開いてください

モジュールの作成

挿入→標準モジュール
という順に操作すると自動的にモジュールが開くので、ここにコードを記述します。

条件分岐させよう

VBAで条件分岐させるには、
If文を使用します。

条件分岐の構文※Ifのみ

If 条件式 Then
    条件式がTrueの場合の処理
End If
これは条件式がTrueの場合のみに処理を行って
Falseのときには何もしないという記述だよ!

条件分岐の構文※Ifのみ

If 条件式 Then
    条件式がTrueの場合の処理
Else
    条件式がFalseの場合の処理
End If
これはTrueの場合とFalseの場合で異なる処理をする、という記述だよ!

実際に動かしてみよう!

今回は各店舗の売上と目標が設定された表を用意しました。

この目標を達成しているか未達成かをE列に記入するマクロを作成します。

達成、未達成の計算式だよ!
売上 / 目標 >= 1

If文の処理

Sub 条件分岐()
    ' Long型の変数iを宣言
    Dim i As Long
    
    ' iに4~B行の最終セル番 を順番に代入
    For i = 4 To Cells(Rows.Count, "B").End(xlUp).Row
        '目標比が100%を超えているかを判定
        If Cells(i, "C") / Cells(i, "D") > 1 Then
            '条件を見たした場合、E列を更新
             Cells(i, "E") = "目標達成"
        End If
    Next
End Sub

このマクロを実行すると、
渋谷店・大阪店・沖縄店のE列に”目標達成”
というテキストがはいります。

False処理はないので、他のセルは空欄のままだよ!

IF~Else文の処理

Sub 条件分岐Elseあり()
    ' Long型の変数iを宣言
    Dim i As Long
    
    ' iに4~B行の最終セル番 を順番に代入
    For i = 4 To Cells(Rows.Count, "B").End(xlUp).Row
        
        '目標比が100%を超えているかを判定
        If Cells(i, "C") / Cells(i, "D") > 1 Then
            '条件を満たした場合の処理
            Cells(i, "E") = "目標達成"
        Else
            '条件を満たさなかった場合の処理
            Cells(i, "E") = "未達成"
            Cells(i, "E").Interior.Color = vbRed
        End If
    
    Next
End Sub

このマクロを実行すると
渋谷店・大阪店・沖縄店のE列に”目標達成”
札幌店・名古屋店・宮崎店のE列に”未達成”
というテキストがはいります。

今回はFalseの際にも処理が実行されたよ!

まとめ

  • VBAで条件分岐をするにはIF文を使う
  • If 条件式 Then 処理 End If
  • Falseの場合にも処理を実行したい際はElse文を記述
  • 分岐を増やしたい場合はElse Ifを使う

満足いただけたら、1クリックなのでSNSフォローしてもらえると嬉しいです🦈

タイトルとURLをコピーしました