どの会社にも顧客マスタがあると思います。次の顧客マスタがあるとします。

住所に都道府県と市町村区などがすべて記載されており、このままだとデータとして活用しにくいです。
たとえば、地域ごとの売上が知りたいので次のグラフを作成するにしても、都道府県から地域を割り出す必要があります。

本記事では、住所から都道府県と市町村区以降を分離する方法について解説します。
最終形は、次の表のように都道府県と市町村区以降を分離することを目指します。

サンプルデータ
冒頭でも記載した、顧客、郵便番号、住所列があるサンプルデータを使用します。

サンプルデータはこちらからダウンロードしてください。
データの加工
都道府県は全部で47あります(1都・1道・2府・43県)。そのうち、4文字なのは「神奈川県」「和歌山県」「鹿児島県」の3つだけで、他は全部3文字です。
この特徴を使って、名前の取り出し方を工夫できます。具体的には、「4文字目が“県”なら4文字まで取り出す」「そうでなければ3文字まで取り出す」というルールで処理すればOKです。
都道府県だけ抜き出す
Power Queryエディターを開き、「列の追加」タブー「カスタム列」をクリックします。

「新しい列名」に「都道府県」と入力、「カスタム列の式」に後述の変換式を入力し、OKをクリックします。

変換にはText.Middle、Text.Start関数を使います。
= if Text.Middle([住所], 3, 1) ="県" then Text.Start([住所], 4)
else Text.Start([住所], 3)
if Text.Middle([住所], 3, 1) =”県” で、4文字目が県の場合を判定します。第2引数が3となっていますが、0が1文字目という意味合いのためです。ご注意ください。then Text.Start([住所], 4)で住所から4文字の神奈川県」「和歌山県」「鹿児島県」を取得しています。
else Text.Start([住所], 3) で3文字の都道府県を取得しています。
次のように都道府県が取得できました。

市町村区以降を抜き出す
「列の追加」タブー「カスタム列」をクリックします。

「新しい列名」に「市町村区以降」と入力、「カスタム列の式」に後述の変換式を入力し、OKをクリックします。

変換にはText.Middle、Text.Length関数を使います。
= Text.Middle([住所], Text.Length([都道府県]), Text.Length([住所]))
都道府県より後の文字を取得したいため、Text.Middleの第2引数に都道府県の文字数を入れています。文字数は先程追加した「都道府県」列の文字数をText.Length([都道府県])で取得しています。
第3引数には住所の文字数を入れています。市町村区以降の住所をすべて取得するためです。文字数は Text.Length([住所]) で取得しています。
次のように市町村区以降の住所が取得できました。

データの出力
データの加工が終わったため、「ホーム」タブー「閉じて読み込む」をクリックします。

都道府県・市町村区以降を分離できました。
