Sub TEST3()
With ActiveSheet
'セルの値を取得
a = .Cells(1, 1)
'後ろから『市』の位置を検索
b = InStrRev(a, "市")
.Cells(1, 2) = Left(a, b) '『市』の左側を取得
.Cells(1, 3) = Mid(a, b + 1) '『市』の右側を取得
End With
End Sub
手順は次のようになります。
①後ろから『市』の位置を取得
②取得した位置から住所と番地を分ける
というような感じです。
では実行した結果です。
住所と番地に分けた結果
『千葉県市川市1丁目-2-3』から『千葉県市川市』と『1丁目-2-3』に分けることができました。
複数の『-』で文字列が分けられている
複数の『-』で文字列が区切られている場合で、右側の文字列を切り出す場合にも使えます。
次のような文字列です。
123-456-789
1-2-3456789
1234-567-89
このように『-』が二つある文字列で、右側数字を切り出したい場合です。
文字列『-』の位置は不特定で決まりがないとします。
こちらもInStrでは不便です。
後ろから文字列の位置を検索できる『InStrRev』だと簡単に右側の文字列を切り出せます。
文字列『123-456-789』から『789』を切り出してみます。
Sub TEST4()
a = "123-456-789"
'後ろから『-』の位置を検索
b = InStrRev(a, "-")
'『-』の右側を取得
c = Mid(a, b + 1)
End Sub
Sub TEST7()
a = "ABC"
'『ABC』に『a』が含まれる場合(大文字と小文字の区別なし)
If InStrRev(a, "a", 1, vbTextCompare) > 0 Then
MsgBox "文字列に含まれています"
'含まれない場合
Else
MsgBox "文字列に含まれていません"
End If
End Sub