5/02/2026

Access。クエリ。住所から都道府県を抽出するにはどうしたらいい【prefectures】

Access。クエリ。住所から都道府県を抽出するにはどうしたらいい

<Access>

住所フィールドには、都道府県名から建物名まで入力されているデータなので、都道府県をそのデータから抽出したい場合、Accessでは、どのようにしたらいいのでしょうか。


Excelの場合は、IF関数をつかってもいいのですが、次の方法でも、住所から都道府県名を抽出することができます。


C列には住所が入力されています。D列に都道府県を抽出したので、D2に数式を設定します。


=LEFT(C2,(MID(C2,4,1)="県")+3)

数式を設定後、オートフィルで数式をコピーします。


これで、都道府県を抽出することができます。


そもそも、なんでこんな数式をつくらないといけないのかというと、4文字目県問題があるからです。


4文字目県問題とは、神奈川県・和歌山県・鹿児島県のことを指します。


この3件だけ、県が左から4文字目にあります。

ほかの県や北海道・東京都・大阪府・京都府はすべて左から3文字目が区切り位置になっています。


そのため、4文字目が県かどうかの判断が必要だというわけです。


この数式のポイントは、

MID(C2,4,1)="県"

左から4文字目が県だったら、TRUE。


そうでなければ、FALSEを返します。


ExcelではTRUEを1、FALSEを0と定義しています。


4文字目が県ならば1 その値に+3すれば4になります。

そして、LEFT関数をつかうことで、左から4文字目までを抽出するという数式をつくることができます。


これで、都道府県を抽出することができるわけですが、Accessではどのようにしたらいいのでしょうか。


AccessにはIIF関数が用意されていますが、今回紹介したLEFT+MID関数の組み合わせと同じようできるといいのですが。


Accessでの確認をしておきます。


T_都道府県というテーブルの住所フィールドから都道府県を抽出するクエリをつくります。


クエリデザインをつかいます。


Excelと同じ数式を演算フィールドでつくってみました。


都道府県: Left([住所],(Mid([住所],4,1)="県")+3)

実行してみます。


残念ながら、うまく抽出できません。


神奈川県が「神奈」というように、左から4文字目どころか2文字目までで抽出されていることがわかります。


なんでこのようになったのかを確認するために、引数内のMid関数だけの演算フィールドをつくって確認してみます。


Mid関数確認: (Mid([住所],4,1)="県")

実行してみます。

 


AccessではTRUEを「-1」と定義されているので、左から2文字目までしか抽出してくれなかったわけです。


ならば、「+1」となるように演算フィールドを修正すればいいわけです。

都道府県: Left([住所],((Mid([住所],4,1)="県")*-1)+3)

都道府県: Left([住所],((Mid([住所],4,1)="県")*-1)+3)

「-1」を「1」にしたいだけなので「*-1」とマイナス1をかけてあげればいいわけです。


では、実行してみましょう。 

これで、住所フィールドから都道府県名を抽出することができました。