Like演算子は文字列の検索では手軽です。InStrよりも柔軟性があるので、正規表現よりも勝手がよくこの手の検索では重宝します。
しかしながらちょっと気を付ける点もあります。逆に気を付けないと全く予期しない結果が返ってくるので要注意です。
実際に検索すると気を付けることが分かる
どんな点を注意するのかは、実際に例を見てもらった方が早いです。
下記の表は対象となる都道府県をLike演算子で判別し、Trueなら「○」を入れるようにしています。
Sub 対象となる都道府県の抽出1()
Dim i As Integer
For i = 2 To 6
If Cells(i, 1).Value Like “[!東京]*” Then
Cells(i, 2).Value = “○”
Else
Cells(i, 2).Value = “”
End If
Next i
End Sub
「東京」以外で実際に行った処理結果を見ると下記のようになります。
どういうわけか「京都府も対象から漏れている」ことが分かります。
charlistは「1文字」単位となる
マイクロソフトのページにも記載がありますが、[]を使ったcharlistは複数の文字があっても1文字単位で判定されるということです。
つまりこれは上記は簡単に言えば、
「東」からなる文字がないかどうか
「京」からなる文字がないかどうか
でチェックされると言えます。
「文字列が含まれない」は反転してみるのが楽
「○○」が含まれない、という判定は逆説的なロジックがシンプルだと思います。
つまり、
Sub 対象となる都道府県の抽出2()
Dim i As Integer
For i = 2 To 6
If Not Cells(i, 1).Value Like “東京*” Then
Cells(i, 2).Value = “○”
Else
Cells(i, 2).Value = “”
End If
Next i
End Sub
上記にすることで「1文字以上の文字列」を「含む」判定できので、逆にFalse(True)であったデータを「Not」で反転させています。