こんにちは、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に関する動画について講師に焦点を当ててまとめま...
ブログ村ランキング参加中です。よかったらフォローお願いします!!
スポンサーリンク