Excel VBA | VBA 文字列操作関数一覧

Excel VBA VBA
スポンサーリンク

住所データを「都道府県」「市区町村」「町名・番地」に分割するサンプルコードを紹介します。
実務でよくある「住所を3分割」する処理の基本形です。


サンプルコード(住所を3分割)

Sub SplitAddress3Parts()
    Dim lastRow As Long
    Dim i As Long
    Dim addr As String
    Dim pos As Long
    Dim pref As String, city As String, town As String
    Dim keyWords As Variant, k As Variant
    
    ' A列に住所が入っている想定
    lastRow = Cells(Rows.Count, 1).End(xlUp).Row
    
    ' 都道府県を判定するキーワード
    keyWords = Array("都", "道", "府", "県")
    
    For i = 2 To lastRow
        addr = Cells(i, 1).Value
        
        ' 都道府県を抽出
        For Each k In keyWords
            pos = InStr(addr, k)
            If pos > 0 And pos < 5 Then
                pref = Left(addr, pos)
                addr = Mid(addr, pos + 1)
                Exit For
            End If
        Next k
        
        ' 市区町村を抽出(「市」「区」「町」「村」で判定)
        pos = 0
        pos = InStr(addr, "市")
        If pos = 0 Then pos = InStr(addr, "区")
        If pos = 0 Then pos = InStr(addr, "町")
        If pos = 0 Then pos = InStr(addr, "村")
        
        If pos > 0 Then
            city = Left(addr, pos)
            town = Mid(addr, pos + 1)
        Else
            city = addr
            town = ""
        End If
        
        ' 出力(B列:都道府県、C列:市区町村、D列:町名・番地)
        Cells(i, 2).Value = pref
        Cells(i, 3).Value = city
        Cells(i, 4).Value = town
    Next i
End Sub
VB

✅ 実行例

A列(住所)B列(都道府県)C列(市区町村)D列(町名・番地)
東京都江東区豊洲1-1-1東京都江東区豊洲1-1-1
大阪府大阪市北区梅田1-2-3大阪府大阪市北区梅田1-2-3
福井県三方郡美浜町△△1-1-1福井県三方郡美浜町△△1-1-1

💡 応用ポイント

  • 郡や町村の判定を強化する場合は、市区町村のマスタデータを参照すると精度が上がります。
  • 郵便番号付き住所は、先に Replace で数字や記号を除去してから処理すると安定。
  • 建物名や部屋番号まで分割したい場合は、さらに正規表現(LikeVBScript.RegExp)を使うと便利です。
VBA
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました