11/24/2024

Excel。VBA。住所から都道府県の抽出をVBAでやってみる【prefectures】

Excel。VBA。住所から都道府県の抽出をVBAでやってみる

<Excel VBA>

データ読み込んでみたところ、セルには、都道府県からはじまる、住所が入力されていました。


これでは、作業がしにくいことがあるので、まずは、都道府県だけ抽出することにしました。


関数をつかってもいいのですが、今回は、Excel VBAでプログラムをつくって対応してみたいと思います。


次の表が対象になる表です。

住所から都道府県の抽出をVBAでやってみる

A列にデータがあります。都道府県だけB列に抽出させます。


今回つくってみたプログラム文です。

Sub 都道府県()

    Dim i As Long

    Dim lastrow As Long

    Dim ad As String

    

    lastrow = Cells(Rows.Count, "a").End(xlUp).Row

  

    For i = 2 To lastrow

        

        ad = Cells(i, "a")

        

        If Mid(ad, 4, 1) = "県" Then

            Cells(i, "b") = Left(ad, 4)

        Else

            Cells(i, "b") = Left(ad, 3)

        End If

    Next

End Sub


では、実行してみましょう。


このように、都道府県をB列に抽出することができました。


プログラム文を確認しておきましょう。


まずは、宣言文

Dim i As Long

Dim lastrow As Long

Dim ad As String


lastrow = Cells(Rows.Count, "a").End(xlUp).Row 

この行で、データの件数をlastrowに代入しています。


For i = 2 To lastrow ~Next

For文で繰り返します。

データは2件目からなので、2。


ad = Cells(i, "a")

A列のデータを変数adに代入します。


If Mid(ad, 4, 1) = "県" Then

    Cells(i, "b") = Left(ad, 4)

Else

    Cells(i, "b") = Left(ad, 3)

End If


If Else文で分岐処理をさせます。


左から4文字目が”県”だったら、左から4文字をB列に抽出。

そうでなければ、左から3文字をB列に抽出。

という処理をさせています。


A列には、住所しか入っていない。

そして、きちんとした住所であるとしております。


データが不安定な場合には、


If Mid(ad, 4, 1) = "県" Then

    Cells(i, "B").Value = Left(ad, 4)

ElseIf Mid(ad, 3, 1) = "都" Or Mid(ad, 3, 1) = "府" Or Mid(ad, 3, 1) = "道" Then

    Cells(i, "B").Value = Left(ad, 3)

Else

    Cells(i, "B").Value = "確認必要"

End If


とするといいかもしれませんね。


昔のような、相模 とか 武蔵 とか 大和 とか2文字だったら、楽だったんですけどね。