Excel VBA | Cells を使った「住所から都道府県だけ抽出する」応用例

VBA
スポンサーリンク

顧客リストやアンケートデータでは「住所」から 都道府県だけを取り出したい 場面がよくあります。
Excel VBAで簡単に「住所の先頭に含まれる都道府県名」を抽出する方法を紹介します。


コード例

Sub ExtractPrefecture()
    Dim i As Long, lastRow As Long
    Dim addr As String, pref As String
    
    ' 都道府県リスト(主要47都道府県)
    Dim prefectures As Variant
    prefectures = Array("北海道", "青森県", "岩手県", "宮城県", "秋田県", "山形県", "福島県", _
                        "茨城県", "栃木県", "群馬県", "埼玉県", "千葉県", "東京都", "神奈川県", _
                        "新潟県", "富山県", "石川県", "福井県", "山梨県", "長野県", _
                        "岐阜県", "静岡県", "愛知県", "三重県", _
                        "滋賀県", "京都府", "大阪府", "兵庫県", "奈良県", "和歌山県", _
                        "鳥取県", "島根県", "岡山県", "広島県", "山口県", _
                        "徳島県", "香川県", "愛媛県", "高知県", _
                        "福岡県", "佐賀県", "長崎県", "熊本県", "大分県", "宮崎県", "鹿児島県", "沖縄県")
    
    ' A列の最終行を取得
    lastRow = Cells(Rows.Count, 1).End(xlUp).Row
    
    For i = 1 To lastRow
        addr = Cells(i, 1).Value
        pref = ""
        
        If addr <> "" Then
            Dim j As Long
            For j = LBound(prefectures) To UBound(prefectures)
                If InStr(addr, prefectures(j)) = 1 Then
                    pref = prefectures(j)
                    Exit For
                End If
            Next j
        End If
        
        ' B列に抽出結果を出力
        If pref <> "" Then
            Cells(i, 2).Value = pref
        Else
            Cells(i, 2).Value = "不明"
        End If
    Next i
End Sub
VB

解説

  • 都道府県リストを配列に用意 → 47都道府県を網羅
  • InStr(addr, prefectures(j)) = 1 → 住所の先頭に都道府県名があるか判定
  • 一致したらB列に出力、なければ「不明」と表示

実行イメージ

A列(住所)B列(抽出結果)
東京都江東区亀戸1-1-1東京都
神奈川県横浜市中区山下町1-1神奈川県
大阪府大阪市北区梅田1-1-1大阪府
江東区亀戸1-1-1不明

応用ポイント

  • 「不明」データを別シートにまとめる → データ監査に活用
  • 郵便番号と組み合わせる → 郵便番号から都道府県を補完可能
  • 正規表現を使う → 住所の途中に都道府県がある場合にも対応できる

💡 この仕組みを使えば「顧客リストから都道府県別に集計」や「地域別マーケティング分析」が一気に楽になります。

VBA
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました