アクセス担当のまみです。
住所から都道府県名だけを取り出したいとか、市町村名以下を取り出したいって時がありませんか?
データ量が多いと手作業ではとっても大変です。
そんな時には関数が活躍してくれます。
1つの関数では取り出せないのですが、いくつかの関数を組み合わせることで住所を都道府県名と市町村以下に分割できます。
Contents
住所から都道府県名を取り出す
(都道府県名が入力されていることが条件)
使用するテーブル
「T_住所録」
方法1
文字列を指定して、何番目まで取り出すかを数値で指定することで、左から文字を取り出してくれます。
ということはMid関数を使うんだね。
先頭から4番目の文字は「Mid([住所],4,1)」で取り出せます。
Left([住所],IIf(Mid([住所],4,1)=”県”,4,3))でどう?
ではさっそくクエリで住所から都道府県名を取り出してみましょう。
リボンの①「作成」タブから②「クエリデザイン」を選択し、「T_住所録」を追加します。
フィールドに下記を入力します。
Left都道府県: Left([住所],IIf(Mid([住所],4,1)=”県”,4,3))
Mid都道府県: Mid([住所],1,IIf(Mid([住所],4,1)=”県”,4,3))
先頭から取り出すから開始位置は1だね!
デザインビューで確認てみてね!
クエリの結果
クエリには「Q_県名IIf」と名前をつけておきましょう。
方法2
フィールドに「文字数: Mid([住所],4,1)=”県”」と入力します。
クエリの結果
フィールドに下記を入力します。
Left都道府県: Left([住所],3-(Mid([住所],4,1)=”県”))
Mid都道府県: Mid([住所],1,3-(Mid([住所],4,1)=”県”))
デザインビューで確認してみてね!
クエリの結果
クエリには「Q_県名」と名前をつけておきましょう。
市町村以下を取り出す
(都道府県名が入力されていることが条件)
方法1
最初の3つまでは必須、[ ]で囲ってある残りの3つは省略可能です。
都道府県名を取り出す方法はどれでも好きなのを使ってね!
フィールドに下記を入力します。
都道府県: Left([住所],IIf(Mid([住所],4,1)=”県”,4,3))
市町村以下: Replace([住所],[都道府県],” “,1,1)
引数は省略可能なので、Replace([住所],[都道府県],” “)でも同じ結果になります。
クエリの結果
クエリは「Q_市町村」と名前をつけておきましょう。
方法2
都道府県名の文字数に1を足した数で住所から市町村名以下を取り出せます。
指定した文字列の文字数を教えてくれます。
既に取り出してある都道府県名を使うから文字数がわかるのかぁ。なるほど~。
フィールドに下記を入力します。
都道府県: Left([住所],IIf(Mid([住所],4,1)=”県”,4,3))
市町村以下: Mid([住所],Len([都道府県])+1)
クエリの結果
クエリには「Q_市町村Len」と名前をつけておきましょう。
[quads id=2]
都道府県名が入力されていない場合の分割方法
これまでご紹介してきた方法は、都道府県名が入力されていないと使えないのですが、都道府県名が入力されていないデータが混じっていても、住所を分割する方法があります。
先頭から3番目の文字が「都道府県」のどれかなら3文字取り出す、先頭から4番目の文字が「県」なら4文字取り出す、それ以外なら空白になるようにってできれば空白が混じっていても都道府県名が取り出せます。
条件にあてはまればその条件に対応する値を返してくれます。
フィールドに下記を入力します。
都道府県: Switch(Mid([住所],3,1) In (“都”,”道”,”府”,”県”),Left([住所],3),Mid([住所],4,1)=”県”,Left([住所],4))
市町村以下: Replace([住所],Nz([都道府県]),” “)
クエリの結果
データがある場合はデータを返してくれて、Nullの場合は代替値を返してくれます。
都道府県: IIf(Mid([住所],3,1) In (“都”,”道”,”府”,”県”),Left([住所],3),IIf(Mid([住所],4,1)=”県”,Left([住所],4)))
クエリは「Q_空白対応」と名前をつけておきましょう。
まとめ
住所を都道府県名と市町村以下に分割したいって結構使用頻度が高いです。
色々な方法があるので、お好きな方法で活用してくださいね!