Excel。VBA。住所から都道府県の抽出をVBAでやってみる
<Excel VBA>
データ読み込んでみたところ、セルには、都道府県からはじまる、住所が入力されていました。
これでは、作業がしにくいことがあるので、まずは、都道府県だけ抽出することにしました。
関数をつかってもいいのですが、今回は、Excel 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文字だったら、楽だったんですけどね。