Excel。VBA。セル内に該当する文字が含まれているかを手早く判断したい。
<Excel VBA:InStr関数>
データを読み込んだ後に、セル内に該当する文字列が含まれているかを判断させたいわけです。
読み込んだあとに、数式をつくって判断するのもいいのですが、頻繁に行うようならば、Excel VBAでプログラム文をつくってしまうというのもアリですね。
今回は、B列の住所に神奈川県の横浜市だったら、C列の横浜市という列に「○」を表示します。
では、早速プログラム文を書いてみましょう。
Sub 横浜市を含む()
Dim i As Long
Dim lastrow As Long
lastrow = Cells(Rows.Count, "a").End(xlUp).Row
For i = 1 To lastrow
If InStr(Cells(i, "b"), "神奈川県横浜市") <> 0 Then
Cells(i, "c") = "○"
End If
Next
End Sub
これだけで、セル内に該当する文字列があるか、ないかを判断することができます。
プログラム文を確認していきます。
お馴染みの変数の宣言文ですね。
Dim i As Long
Dim lastrow As Long
lastrow = Cells(Rows.Count, "a").End(xlUp).Row
変数のlastrowは、繰り返し回数の最大値を格納するための変数です。
For i = 1 To lastrow
If InStr(Cells(i, "b"), "神奈川県横浜市") <> 0 Then
Cells(i, "c") = "○"
End If
Next
For to Nextで繰り返し処理をしています。
If InStr(Cells(i, "b"), "神奈川県横浜市") <> 0 Then
Cells(i, "c") = "○"
End If
ここで、該当するセルに、「横浜市」が含まれているかを判断させています。
InStr関数は、文字列に指定した文字列を検索して、最初に見つけた文字位置を算出する関数です。
つまり含まれていなければ、「0」となるわけですね。
そのため、IF文で、「0」と等しくなければ、文字が含まれているということがわかりますので、C列に「”○”」を表示させるようにしているというわけです。
なお、InStr(インストリング)関数は、Excel VBAの関数なので、通常のExcelにはありません。