11/27/2022

Excel。VBA。セル内に該当する文字が含まれているかを手早く判断したい。【characters】

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にはありません。