投稿/コメントを表示します。

問題[2]ですが、B11="東京都町田市○×123-1", B12="福島県郡山市○×123-1" などと入れてテストしましたが前者ばNG,後者はOKでした。
ですので若干改修してみました。
他にもうまくいかないケース(千葉県市原市など)は多々あると思いますが
このセンテンスでは全パターンを網羅するマクロを作成する(=品質を高める)のが目的ではないと理解しておりますのでこれで良しとします。
Sub bunkatsu2()
    Dim gyo
    Dim todofuken_idx
    Dim shikugun_idx
    Dim jyusho
    
    For gyo = 2 To 12
        jyusho = Range("B" & gyo).Value
        If Left(jyusho, 3) = "東京都" Then
            todofuken_idx = Len("東京都")
        ElseIf Left(jyusho, 3) = "北海道" Then
            todofuken_idx = Len("北海道")
        ElseIf Left(jyusho, 3) = "大阪府" Then
            todofuken_idx = Len("大阪府")
        ElseIf Left(jyusho, 3) = "京都府" Then
            todofuken_idx = Len("京都府")
        ElseIf InStr(jyusho, "県") > 0 Then
            todofuken_idx = InStr(jyusho, "県")
        End If
        Range("C" & gyo).Value = Left(jyusho, todofuken_idx)
    
        If InStr(todofuken_idx + 1, jyusho, "町田市") > 0 Then
            shikugun_idx = InStr(jyusho, "町田市") + 2
        ElseIf InStr(todofuken_idx + 1, jyusho, "村") > 0 Then
            shikugun_idx = InStr(jyusho, "村")
        ElseIf InStr(todofuken_idx + 1, jyusho, "町") > 0 Then
            shikugun_idx = InStr(jyusho, "町")
        ElseIf InStr(todofuken_idx + 1, jyusho, "区") > 0 Then
            shikugun_idx = InStr(jyusho, "区")
        ElseIf InStr(todofuken_idx + 1, jyusho, "市") > 0 Then
            shikugun_idx = InStr(jyusho, "市")
        ElseIf InStr(todofuken_idx + 1, jyusho, "郡") > 0 Then
            shikugun_idx = InStr(jyusho, "郡")
        End If
        
        Range("D" & gyo).Value = Mid(jyusho, todofuken_idx + 1, shikugun_idx - todofuken_idx)
        Range("E" & gyo).Value = Mid(jyusho, shikugun_idx + 1)
    
    Next

End Sub

2017/09/26 22:50