LoginSignup
1
1
記事投稿キャンペーン 「2024年!初アウトプットをしよう」

パワークエリで住所から都道府県のみを抽出する方法

Posted at

はじめに

  • 住所が正しく都道府県から記載されている事が前提条件となります。
  • 日本の住所における以下特徴をうまく活用します。

特徴

  • ほとんどの都道府県名は住所の先頭から"3文字"
  • 3文字以外には"4文字"しか存在しない
  • 4文字は「鹿児島県」「和歌山県」「神奈川県」の3県だけ

PowerQueryで対応する方法

  • 多少冗長ですが、個人的に以下の方法が分かりやすいと考えています。
  • M言語を書けなくてもクリック操作&コピペで対応可能です。(一部書き換えは必要)

1.「条件列」を使用し、4文字で始まる県はそのまま表示させる。

列の追加 > 条件列を押下後、画像の様に入力します。
※条件列を増やすには、「旬の追加」をクリックして下さい。
PQ1.jpg

「神奈川県」は抽出成功。
それ以外に該当する東京都と大阪府は、「その他」と表示されました。
PQ2.jpg

このままでは使いものにならない為、修正を加えていきます。

2.住所の頭3文字を抽出する

まず、住所列を選択。
その後、抽出 > 最初の文字をクリック。
カウント欄に、「3」を入力します。
PQ3.jpg

結果、以下の様な結果が得られます。
但し、神奈川県も「神奈川」と3文字しか表示されていません。
ここで注目するのは数式の部分です。赤枠部分の数式だけをコピペして下さい。
※ここでは数式を得たかっただけなので、適用したスキップにある挿入された最初の文字は✗で削除して下さい。
PQ4.jpg

Text.Start([住所], 3)

3.「条件列」の数式を修正する

次に数式バーにある数式を修正します。
"その他"を削除し・・・
PQ5.jpg

先程コピペした、Text.Start([住所], 3)に書き換えてください。
PQ6.jpg

求めていた結果を得る事が出来ました👍


要は以下の数式をクリック&コピペのみで作成した形です🤓

=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))

関数で都道府県抽出2.jpg

※鉄板ネタの為、詳細説明は割愛します。
 住所の4番目の文字が”県”であれば4文字
 それ以外の場合は3文字を表示させる事で都道府県を抽出しています。

②Excel APIを使用する方法

「住所の分割」機能を用いて①と同じ結果を得る事が可能です。

=WEBSERVICE("https://api.excelapi.org/post/address-separate?parts=1&address="&ENCODEURL(A2))

Excel API.jpg

※無料で使用可能ですが、1日1万件以上のアクセスが必要な場合は有料となります。
 アクセス制限が掛かるだけで一方的に課金される事はありませんのでご安心下さい。
 詳細は下記公式サイトをご参照下さい。


Excel関数のみで処理する方が手っ取り早いですが、外部データソースをPowerQueryで処理している場合など、PowerQueryのみで完結したい/関数での処理を挟みたくないといった場合に使える手法かと思います。

ご参考になれば幸いです😊

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1