見出し画像

【ACCESS VBA】都道府県と市区町村を分割する究極の方法

顧客の住所に関して、都道府県を抽出する場合があります。
その際に、都道府県と、市区町村の間に、スペースを入れます。
しかし、そのスペースが半角、全角で、バラバラの時があります。
そんな時は、今回の記事が役立つはずです。

都道府県と市区町村を分割する究極の方法

こんにちは。伊川(@naonaoke)です。
最近は、他部署からの引継にかんして、記載しています。

引継の中には、顧客の住所が良く含まれています。
その際に、都道府県と市区町村の間にスペースがあります。

私も、Excel、ACCESSを知らないときは、なぜ、スペースがあるのがわかりませんでした。
しかし、そのスペースを目印に、分割するということがわかりました。
しかし、そのスペースも、半角なのか、全角なのかで、都道府県を上手く、抽出できないときがありました。

その時は、本当にイライラしていました。

所詮、人間がすることです。

その時に、半角なのか、全角なのかで、都度、注意喚起するのも、どうかな?と

なので、半角であれ、全角であれ、または、スペースがなくても、都道府県と市区町村を分割する方法を紹介します。

このブログはこんな人にお勧め

Excel、ACCESSで、都道府県を関数で抽出している人
半角、全角が統一されていなくて、朝、引継を見たときにイライラしている人
Functionを勉強している人

このブログを、読み終わるころには・・・・


ユーザー定義関数を作成することで、朝のイライラから解放されます。
Functionを利用するのですが、それほど難しくありません。
むしろ、Instr関数が活躍します。

都道府県と市区町村を分割する究極の方法

都道府県と、市区町村を分割する方法としては、
Find関数
Split関数
Instr関数
大体、この3つでしょうか?
ただ、ACCESSには、Find関数はないので、Split関数か、Instr関数になります。
今回は、Instr関数で実行したいと思います。
何回も言いましたが、Functionで、ユーザー定義関数を作成する場合は、汎用性を持たせるために、ボヤーっと関数を作成します。

都道府県と市区町村を分割する究極の方法 作業手順 その1 データベース確認

画像1

このデータベースで、都道府県と市区町村を分割します。
スペースの無いデータ、スペースのあるデータと、様々です。
ユーザー定義関数を作成すれば、カンタンです。

都道府県と市区町村を分割する究極の方法 作業手順 その2 ユーザー定義関数を作成

画像2

strが、Nullなら、長さを0(= "")
strの3番目に、都道府県のいずれかの文字が有ったら、左から3文字を抽出
strの4番目に、県があったら、左から4番目を、抽出
strに、都道府県の文字かなかったら、長さを0(= "")
これだけのコードです。
場所を指定していないので、汎用性がありますね。

都道府県と市区町村を分割する究極の方法 作業手順 その3 市区町村を抽出


画像3

Nz([住所],"")の意味は、strの中に、都道府県がなければ、エラーになるため、エラー回避のためです。
市区町村を含む場合には、都道府県の値を長さ0(= "")に変換するとことで、市区町村を表示させます。

都道府県と市区町村を分割する究極の方法 作業手順 その4  Trim関数を利用して、再度整形

画像4

元データに、スペースがあるので、左端にも、スペースがあります。
このスペースにが、気になる人もいるでしょう。
せっかくなので、Trim関数で、そのスペースを除去します。

画像5

たったこれだけです。
Trimは、両端の空白を除去しますので、便利ですね。

画像6

これで完成です。

ここがポイント

今回は、ACCESSで都道府県を分割しました。
もちろん、Excelでもできますが、大量データを扱えるACCESSのほうが便利ですね。
私が扱うデータは、必ず3,000件以上なので、また、Excelよりも、私は、ACCESS派です。
どっちにしても、今後は、スペースがあっても、無くても、都道府県と、市区町村の分割は可能です。


まとめ

消費税や、合否判定ではなくても、Functionは使えます。
このことを、世間の皆様へ、知っていただきたいですね。
今回も最後まで読んでいただきありがとうございました。

よろしければサポートをお願いします。いただいたお金に関しては、書籍の購入に充て、より良い情報を皆様に提供します。