Excel。VBA。指定の文字列が含まれているかを、手早く確認したい。
<Excel VBA:InStr関数>
セル内に、該当する文字列がセル内に含まれているならば、「○」というような判定を手早く行いたいわけです。
そこで、今回は、Excel VBAでプログラムをつくって対応していきます。
次のようなプログラム文をつくってみました。
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, "a"), "八王子市") <> 0 Then
Cells(i, "b") = "○"
End If
Next
End Sub
では、実行します。
このように、A列の住所に八王子市が含まれているデータに「○」が表示されていることが確認できます。
大量なデータなどで、オートフィルターで抽出して…という処理でもいいかもしれませんが、定期的に大量なデータを使う場合などには、Excel VBAのプログラムを用意しておくといいかもしれません。
では、プログラム文を確認します。
変数の宣言文です。
Dim i As Long
Dim lastrow As Long
lastrow = Cells(Rows.Count, "a").End(xlUp).Row
lastrowは、A列のデータの一番下の行番号を代入させます。
そして、このあとの、繰り返し文で、繰り返す上限として使っています。
For i = 1 To lastrow
If InStr(Cells(i, "a"), "八王子市") <> 0 Then
Cells(i, "b") = "○"
End If
Next
For To Nextで処理を繰り返しています。
そして、
If InStr(Cells(i, "a"), "八王子市") <> 0 Then ~ End If
If文ですね。InStr関数は、セル内に指定した文字列があるか、どうかを検索する関数です。
そして、含まれていなければ、「0(ゼロ)」を算出します。
逆に含まれているならば、最初に見つけた文字位置を算出します。
要するに、0かどうかで、判断することができるというわけです。
InStr(Cells(i, "a"), "八王子市") <> 0
とすれば、A2に八王子市という文字が含まれているか、どうかが判断できます。
「<>0」は「0ではない」という意味です。
「0ではない」ので、文字が含まれていたら、
Cells(i, "b") = "○"
B列に「○」を表示しましょう。
というわけです。
なお、InStr関数は、通常のExcelにはありません。