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

Excel VBA VBA
スポンサーリンク

住所データを「都道府県」と「市区町村」に分割するには、VBAで文字列操作関数(LeftMidInStr など)を組み合わせるのが基本です。
以下に実務で使えるサンプルコードを紹介します。


サンプルコード:住所を都道府県と市区町村に分割

Sub SplitAddress()
    Dim lastRow As Long
    Dim i As Long
    Dim addr As String
    Dim pos As Long
    Dim pref As String
    Dim city As String
    Dim keyWords As Variant
    Dim 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)
                city = Mid(addr, pos + 1)
                Exit For
            End If
        Next k
        
        ' 結果をB列・C列に出力
        Cells(i, 2).Value = pref
        Cells(i, 3).Value = city
    Next i
End Sub
VB

📝 処理の流れ

  1. 住所データをA列に入力(例:「東京都江東区豊洲1-1-1」)
  2. Array("都","道","府","県") を使って都道府県の終端を判定
  3. Left で都道府県を抽出、Mid で残りを市区町村として抽出
  4. B列に都道府県、C列に市区町村を出力

✅ 実行例

A列(住所)B列(都道府県)C列(市区町村以降)
東京都江東区豊洲1-1-1東京都江東区豊洲1-1-1
大阪府大阪市北区梅田1-2-3大阪府大阪市北区梅田1-2-3
北海道札幌市中央区大通西1北海道札幌市中央区大通西1

💡 応用ポイント

  • 「郡」や「町村」まで分割したい場合は、さらに辞書データを用意して判定を強化
  • 郵便番号付き住所は、先に Replace で数字や記号を除去してから処理すると精度UP
  • 市区町村ごとにシート分割する応用マクロも可能
VBA
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました