エクセルマクロ(EXCEL VBA) その7 Ifで条件分岐(If)
Ifを使った条件分岐
その5、その6でFor Nextを使った繰り返し作業を学びました。
今回は、For Nextと共にとても重要な If を使った条件分岐についてご紹介します。
もし○○だったら、△△する
というように、条件によってセルに書き込むものを変えることができます。
例えば、公演チケットの券売状況を記した表があったとします。
80%以上であれば「好調!」
と入れられるようなものを作ってみましょう。
まずは、開発→Visual Basic
挿入→標準モジュールとして、
sub kenbai_hantei
と入力してエンターを押します。
※マクロの始め方は、その2をご参照ください。
F2のセルを狙いたいので、Cellsで表現すると
Cells(2, 6)ですね。
cells(2,6) = "好調!"
と打って、合ってるか確かめてみましょう。
これを実行すると、
うまくF2のセルに「好調!」と打ち込めましたね。
でも、このままでは条件もなにもない状態なので、
続いて「80%以上の時に、好調!と打つ」という条件を記載していきましょう。
今のコードの前後にこういう感じに打ち込んでください。
If Cells(2, 5) >= 0.8 Then
Cells(2, 6) = "好調!"
End If
上の赤線で記した行は、
Cells(2, 5)・・・ここでは94%となっているところです。
それが、 >= 0.8 ・・・80%以上だったら、と書いているわけです。
その後に必ず Then という文言が必要です。
そして、次の Cells(2, 6) = “好調!” は、もしCells(2, 5)が80%以上だったら実行する内容です。
実行する内容を書いた後に、
青線で書いてあるEnd Ifで締めるというのが、If文の書き方のルールです。
これを実行すると
試しに、表の方を修正して80%になるようにしてみましょう。
ちょっと心が痛みますが、券売を60にして、割合が75%になるようにしてみます。
これで同じマクロを実行してみてください。
何も書かれませんよね?
残念ながら80%に届いていないので、何も書かれないということでマクロの動作としては正解です。
ということで、Ifがうまく記述できたので、これを2行目から4行目まで、For Nextを使って繰り返しましょう。
Cells(2, 6)や、Cells(2, 7)となっている 2 のところが、2, 3, 4という感じで繰り返せばいいので、i で置き換えると
For i = 2 To 4
If Cells(i, 5) >= 0.8 Then
Cells(i, 6) = "好調!"
End If
Next
ってことですね。
これを実行すると
千穐楽だけ「好調!」と入りました!
どうでしょう。うまく行きましたでしょうか?
実際80%以上の時だけうまく実行できるかどうか、券売数を変更して試してみてください。
ところで、60%以上の時には「もう少し!」と入れたくて、
さらに60%未満の時には「がんばれ!」と入れたいときにはどうしたらいいでしょう。
それが実現できる ElseIf という呪文を次回ご紹介します。
今回の最終的なコード
Sub kenbai_hantei()
For i = 2 To 4
If Cells(i, 5) >= 0.8 Then
Cells(i, 6) = "好調!"
End If
Next
End Sub
宿題-7
同じ表を使って、13:00開演の公演の場合は、判定の欄に「マチネ」
18:00開演の公演の場合は、判定の欄に「ソワレ」と入るようにしてください。
エクセルマクロ(EXCEL VBA) その8 ElseIfを使った条件分岐(If ElseIf)
(文:森脇孝/エントレ)