こんにちは。

前回の続き・・・・


「一致した場合の処理」について説明していきたいと思います!


晴れ一致したら処理する方法

代表的な構文は

【 If [条件式] Then  ~ Else ~  End If 】

です。

これはエクセル関数でも良く使用するものですね。

ちょっと違うのが、関数の場合は、「,」で処理を分けて記載しますが、

マクロでは、”Then”以降に条件にあった処理を、偽の場合は”Else”以降に処理を記載する点です。

また関数では”IF([条件式],[真の処理],IF([条件],・・・・・))”と入れ子で使いますが、

マクロでは”Else”を”ElseIf”として条件式を設定し、”Then”以降に条件に合った処理を記載します。

If [条件式1] Then 

  条件式1に一致した場合の処理内容

ElseIf [条件式2] Then

  条件式2に一致した場合の処理内容 

Else 

  条件式1、2に一致しない場合の処理内容

End If


これを使用すると課題の一覧表Aと一覧表Bで同じ都道府県名であった場合の処理を行うことができます。
課題でみると 

1 条件式・・・一覧表Aの値=一覧表Bの値 

2 一致時の処理・・・一覧表Aの調査日を一覧表Bの調査日に代入

となります。

セルの値を取得するには、前回の説明に出てきました”Cells”を使用します。

【 Cells(行,列).Value 

これでセルの値を取得することができます。

代入については 【=】(イコール)を使用します。

マクロでは条件式に使用する場合を除いて【=】は「右辺の値を左辺に代入する」という意味になります。

上記を踏まえると一致した場合の処理は

If Cells(行,列).Value = Cells(行,列).Value Then 
↑一覧表Aの都道府県名 ↑一覧表B都道府県名

Cells(行,列+1).Value = Cells(行,列+1).Value 
↑一覧表Bの調査日の値 ↑一覧表Aの調査日の値

Else

End If

となります。


IF の中の”=”は等号(同じ)の意味となり、”Then”以降の”=”は代入の意味となります。

”Else”以降に何も記載していないのは、条件に一致しなかった場合の処理が無いためです。


無いのなら”Else”は無くてもいいのではと思われた方は正解!です

一致しない場合の処理が無い場合は”Else”を省略して構いません。


これで、一致した場合の処理

【 If [条件式] Then  ~ Else ~ End If 】

の使用方法をご理解いただけたかと思います。



次回は、「データの数だけ繰り返す処理」と「該当するデータが無かった場合のコメント表示」について説明したいと思います。