『Excel VBA 表計算とプログラミング学習サイト』では、アフィリエイトプログラムを利用して商品を紹介しています。

【VBA】住所一覧から都道府県名を取り出すKEN関数

住所データから都道府県名だけを取り出す ファンクションマクロ(ユーザー定義関数)を作ってみます。たとえばあるセルに「山梨県甲府市猪狩町 A – B – C」という住所があったときに別のセルに「山梨県」だけを抜き出します。日本にある 47 都道府県は 1 都・1 道・2 府・43 県ですから、
「東京都、京都府、大阪府、北海道」
を除けば他は全て県であり、県名には
「愛媛県、青森県」
のように 2 文字のものと、
「神奈川県、和歌山県」
のように 3 文字のものがあります。そこでキーとなる文字は 4 番目にあると考えます。4 番目の文字をチェックして、そこにという文字があるならば、先頭から 4 文字を取り出せばよく、それ以外の場合は先頭から 3 文字を取り出すようにすれば全ての都道府県に対応できます。

【VBA】都道府県名を取り出すマクロ

それでは、実際に住所を受け取って、都道府県名を返す関数を作ってみましょう。IF ステートメントを使って場合分けします。

'[VBA] 都道府県名を抜き出す関数

Function KEN(mystr As String) As String

  Dim mykey As String
  Dim mylen As Integer

  '先頭から4番目の数を抜き出します
  mykey = Mid(mystr, 4, 1)

  ' 4番目の数が「県」である場合
  If mykey = "県" Then
    mylen = 4
  Else
    mylen = 3
  End If

  '県名を取り出します
  KEN = Left(mystr, mylen)

End Function

たとえば下図のように B 列に住所データが入っているとします。
 
Excel都道府県取り出し関数
 
C2 セルに「=KEN(B2)」と入力すると「山梨県」が表示されます。あとはオートフィルすれば各データごとの都道府県名が得られます。

コメント