教えて!ExcelVBA!

ExcelVBAの基礎知識・書き方について説明していきます。

【ExcelVBA プログラミング】(条件判断6)入力データを条件判断し結果を表示する方法(IF文とDo~Loop文の組み合わせによる複数判断)

       f:id:m_kbou:20200117110640p:plain

入力したデータを条件判断し結果を表示する方法について説明します。今回はIF文とDo~Loop文の組み合わせによる複数判断について説明します。

 

【目次】

 

例題

例題は、<実行>ボタンにVBAマクロが登録されており、ボタンをクリックする事で入力したデータを条件判断して結果を表示します。内容は、名前欄(A列の3行目~8行目セル)に”大山”の名前が入力されおり、かつ性別欄(B列の3行目~8行目セル)に”男”が入力されている場合は結果欄(C列セル)に”●”を表示し、それ以外の場合は結果欄に”×”を表示するプログラミング方法となります。

[実行前]:

A列の3行目~8行目に名前が入力されており、B列3行目~8行目に性別が入力されている。

f:id:m_kbou:20200309084303p:plain

[実行後]:

名前欄に”大山”が入力されており、かつ性別欄に”男”が入力されている場合は”●”、それ以外の場合は”×”をC列の結果欄に表示する。

f:id:m_kbou:20200309084317p:plain

 

プログラミング

プログラミングは以下の通りとなります。

[記述例]:

※以下の記述例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方については、VBEの開き方を参考にして下さい。また、ボタンにプログラム内容を割り当てには、VBAをボタンに割り当てるを参考にして下さい。

-------------------------------------------------

Sub サンプル()

    Dim 行 As Double
   
    行 = 3

    Do Until Trim(Range("A" & 行)) = ""
        If (Trim(Range("A" & 行)) = "大山" And Trim(Range("B" & 行)) = "男") Then
            Range("C" & 行) = "●"
        Else
            Range("C" & 行) = "×"
        End If
        行 = 行 + 1
    Loop
   
End Sub

-------------------------------------------------

最初に変数:行を指定します。

次に変数:行には初期値として3をセットします。

最後にDo~Loop文を使用して条件判断を行いながら変数:行に数字を1づつ足してループさせます。

ループはA列のセルにデータが入力されていない場合に抜ける事とするため、Trim(Range("A" & 行)) = ""と記述します。Trim関数は文字列前後にスペース文字が入っていた場合に取り除くための指定となります。

このループによりA列の3行目~8行目に入力されている名前とB列の3行目~8行目に入力されている性別で条件判断します。

条件判断にはIF文を使用し、A列に入力されたデータが”大山”かつB列に入力されたデータが”男”であるか否かの判断をするため、Trim(Range("A" & 行)) = "大山" And Trim(Range("B" & 行)) = "男"と記述します。

結果はC列のセルに出力するため、A列のセルに”大山”かつB列のセルに”男”が入力されている場合は、C列セルに”●”を表示するRange("C" & 行) = "●"を記述し、A列のセルに”大山”以外又はB列のセルに”男”以外が入力されている場合は、C列セルに"×"を表示するRange("C" & 行) = "×"を記述します。

ループ内の処理内容を説明すると、

「最初のループでは変数:行に3がセットされているので、A3セルにデータが入力されているか判定します。A3セルにはデータが入力されているため、A3セルの名前が”大山”でかつB3セルの性別が”男”であるか否かを判断します。A3セルには”久保木”の名前が入力されており、B3セルには”男”の性別が入力されているため、名前の条件が一致しない事からC3セルへの結果は”×”をセットします。その後に変数:行に1を足し込みます。この足し込みにより変数:行の値は3+1=4となります。

次のループでは変数:行に4がセットされているので、A4セルにデータが入力されているか判定します。A4セルにはデータが入力されているため、A4セルの名前が”大山”でかつB4セルの性別が”男”であるか否かを判断します。A4セルには”照沼”の名前が入力されており、B4セルには”男”の性別が入力されているため、名前の条件が一致しない事からC4セルへの結果は”×”をセットします。その後に変数:行に1を足し込みます。この足し込みにより変数:行の値は4+1=5となります。

次のループでは変数:行に5がセットされているので、A5セルにデータが入力されているか判定します。A5セルにはデータが入力されているため、A5セルの名前が”大山”でかつB5セルの性別が”男”であるか否かを判断します。A5セルには”大山”の名前が入力されており、B5セルには”男”の性別が入力されているため、両条件が一致する事からC5セルへの結果は”●”をセットします。その後に変数:行に1を足し込みます。この足し込みにより変数:行の値は5+1=6となります。

次のループでは変数:行に6がセットされているので、A6セルにデータが入力されているか判定します。A6セルにはデータが入力されているため、A6セルの名前が”大山”でかつB6セルの性別が”男”であるか否かを判断します。A6セルには”遠藤”の名前が入力されており、B6セルには”男”の性別が入力されているため、名前の条件が一致しない事からC6セルへの結果は”×”をセットします。その後に変数:行に1を足し込みます。この足し込みにより変数:行の値は6+1=7となります。

次のループでは変数:行に7がセットされているので、A7セルにデータが入力されているか判定します。A7セルにはデータが入力されているため、A7セルの名前が”大山”でかつB7セルの性別が”男”であるか否かを判断します。A7セルには”大山”の名前が入力されており、B7セルには”女”の性別が入力されているため、性別の条件が一致しない事からC7セルへの結果は”×”をセットします。その後に変数:行に1を足し込みます。この足し込みにより変数:行の値は7+1=8となります。

次のループでは変数:行に8がセットされているので、A8セルにデータが入力されているか判定します。A8セルにはデータが入力されているため、A8セルの名前が”大山”でかつB8セルの性別が”男”であるか否かを判断します。A8セルには”鈴木”の名前が入力されており、B3セルには”男”の性別が入力されているため、名前の条件が一致しない事からC8セルへの結果は”×”をセットします。その後に変数:行に1を足し込みます。この足し込みにより変数:行の値は8+1=9となります。

次のループでは変数:行に9がセットされているので、A9セルにデータが入力されているか判定します。A9セルにはデータが入力されていないため、ループを抜ける事になります。」

との意味になります。

 

ダウンロード

上記サンプルプログラムを使用したい場合は、こちらからダウンロードして下さい。

1drv.ms

 

関連プログラム

www.osiete-excelvba.work