VBA

【VBA】都道府県に「都」「道」「府」「県」を付けて返す関数

記事内に商品プロモーションを含む場合があります

こんにちは、hokkyokunです。

仕事上、都道府県名に県名を付けて処理する必要が出たので関数を作りました。
ニッチな使い方かもしれませんが、せっかく作ったので共有したいと思います。

なぜこんなプログラムを作ったかというと、
不特定多数に「県名」を入力してもらっているのですが、
人によって「京都」とか「京都府」とか都道府県名を付けたり付けなかったりして
データが汚くなったのでクレンジングする必要が出たので作りました。

関数の詳細

どういうことかもう少し詳しく説明すると
例えば「青森」⇒「青森県」と返す関数です。
「青森県」なら「青森県」のままです。

  • 「茨城」⇒「茨城県」
  • 「東京」⇒「東京都」
  • 「東京都」⇒「東京都」
  • 「北海道」⇒「北海道」
  • 「北海」⇒「北海道」
Function add_Prefecture(ByVal keyword As String)
    Dim Prefectures, Prefecture As Variant
    Prefectures = Array(Array("北海", "道"), Array("青森", "県"), Array("岩手", "県"), Array("宮城", "県"), Array("秋田", "県"), Array("山形", "県"), Array("福島", "県"), Array("茨城", "県"), Array("栃木", "県"), Array("群馬", "県"), Array("埼玉", "県"), Array("千葉", "県"), Array("東京", "都"), Array("神奈川", "県"), Array("新潟", "県"), Array("富山", "県"), Array("石川", "県"), Array("福井", "県"), Array("山梨", "県"), Array("長野", "県"), Array("岐阜", "県"), Array("静岡", "県"), Array("愛知", "県"), Array("三重", "県"), Array("滋賀", "県"), Array("京都", "府"), Array("大阪", "府"), Array("兵庫", "県"), Array("奈良", "県"), Array("和歌山", "県"), Array("鳥取", "県"), Array("島根", "県"), Array("岡山", "県"), Array("広島", "県"), Array("山口", "県"), Array("徳島", "県"), Array("香川", "県"), Array("愛媛", "県"), Array("高知", "県"), Array("福岡", "県"), Array("佐賀", "県"), Array("長崎", "県"), Array("熊本", "県"), Array("大分", "県"), Array("宮崎", "県"), Array("鹿児島", "県"), Array("沖縄", "県"))
    
    '先ず、「都」「道」「府」「県」をkeywordから取り除く
    'ただし「京都」の場合は「京」になってしまうので例外処理
    If keyword <> "京都" Then
        
        Dim regEx As Object
        Set regEx = CreateObject("VBScript.RegExp")
        regEx.Global = True
        regEx.Pattern = "[都道府県]"
        keyword = regEx.Replace(keyword, "")
    End If
    
    
    Dim flg As Boolean
    flg = False
    For Each Prefecture In Prefectures
        If keyword = Prefecture(0) Then
            flg = True
            Exit For
        End If
    Next
    
    If Not flg Then
        MsgBox ("入力値が都道府県以外で書かれている可能性があります")
        add_Prefecture = keyword
        Exit Function
    End If
    
    add_Prefecture = Prefecture(0) & Prefecture(1)
    
End Function

どうでもいいですが、
県名の配列は作るの大変だったのでchatGPTに作ってもらいました。
AIかしこ!!

使ってみます。

Sub test_prefecture()

Debug.Print add_Prefecture("東京")
'>>東京都

Debug.Print add_Prefecture("東京都")
'>>東京都

Debug.Print add_Prefecture("京都")
'>>京都府

Debug.Print add_Prefecture("青森")
'>>青森県

Debug.Print add_Prefecture("青")
'※デバッグ的には「青」
'メッセージボックスで"入力値が都道府県以外で書かれている可能性があります"と警告


End Sub

たまにはこんなのもいいですかね(笑)
書いてて楽しいプログラムでした。

VBAの学習方法をまとめました。

VBA(マクロ)のおすすめの学習方法 こんにちはhokkyokunです。 VBAを学ぶことで確実に業務は効率化し、余裕をもって仕事をすることができるようになります。 ...

VBAを高コスパで、短期間で学ぶにはUdemyがおすすめです。
Udemyは良質の学習プラットフォームですが、
動画数が多すぎてどれを見ればよいか迷います。

おすすめの講師をまとめました。

【Udemyは講師で選べ!】UdemyがVBA学習に最適な理由とおすすめのVBA講師 こんにちはhokkyokunです。 巨大学習プラットホームUdemyの中からVBAに関する動画について講師に焦点を当ててまとめま...

ブログ村ランキング参加中です。よかったらフォローお願いします!!

PVアクセスランキング にほんブログ村