はじめに
- 住所が正しく都道府県から記載されている事が前提条件となります。
- 日本の住所における以下特徴をうまく活用します。
特徴
- ほとんどの都道府県名は住所の先頭から"3文字"
- 3文字以外には"4文字"しか存在しない
- 4文字は「鹿児島県」「和歌山県」「神奈川県」の3県だけ
PowerQueryで対応する方法
- 多少冗長ですが、個人的に以下の方法が分かりやすいと考えています。
- M言語を書けなくてもクリック操作&コピペで対応可能です。(一部書き換えは必要)
1.「条件列」を使用し、4文字で始まる県はそのまま表示させる。
列の追加 > 条件列を押下後、画像の様に入力します。
※条件列を増やすには、「旬の追加」をクリックして下さい。
「神奈川県」は抽出成功。
それ以外に該当する東京都と大阪府は、「その他」と表示されました。
このままでは使いものにならない為、修正を加えていきます。
2.住所の頭3文字を抽出する
まず、住所列を選択。
その後、抽出 > 最初の文字をクリック。
カウント欄に、「3」を入力します。
結果、以下の様な結果が得られます。
但し、神奈川県も「神奈川」と3文字しか表示されていません。
ここで注目するのは数式の部分です。赤枠部分の数式だけをコピペして下さい。
※ここでは数式を得たかっただけなので、適用したスキップにある挿入された最初の文字は✗で削除して下さい。
Text.Start([住所], 3)
3.「条件列」の数式を修正する
次に数式バーにある数式を修正します。
"その他"を削除し・・・
先程コピペした、Text.Start([住所], 3)に書き換えてください。
求めていた結果を得る事が出来ました👍
要は以下の数式をクリック&コピペのみで作成した形です🤓
=if Text.StartsWith([住所], "鹿児島県") then "鹿児島県" else
if Text.StartsWith([住所], "和歌山県") then "和歌山県" else
if Text.StartsWith([住所], "神奈川県") then "神奈川県" else
Text.Start([住所], 3)
【参考】Excel関数で対応する方法
①関数のネストによる方法
以下の数式で都道府県名のみを抽出する事が可能です。
=IF(MID(A2,4,1)="県",LEFT(A2,4),LEFT(A2,3))
※鉄板ネタの為、詳細説明は割愛します。
住所の4番目の文字が”県”であれば4文字、
それ以外の場合は3文字を表示させる事で都道府県を抽出しています。
②Excel APIを使用する方法
「住所の分割」機能を用いて①と同じ結果を得る事が可能です。
=WEBSERVICE("https://api.excelapi.org/post/address-separate?parts=1&address="&ENCODEURL(A2))
※無料で使用可能ですが、1日1万件以上のアクセスが必要な場合は有料となります。
アクセス制限が掛かるだけで一方的に課金される事はありませんのでご安心下さい。
詳細は下記公式サイトをご参照下さい。
Excel関数のみで処理する方が手っ取り早いですが、外部データソースをPowerQueryで処理している場合など、PowerQueryのみで完結したい/関数での処理を挟みたくないといった場合に使える手法かと思います。
ご参考になれば幸いです😊