電話番号は人によって080-xxxx-yyyyといったようにハイフンを付けたり、080xxxxyyyyといった半角数字だったり入力がバラバラだったりします。データ分析をする上では表記は統一した方がいいでしょう。
この記事では、表記を半角数字、または全角数字のみに統一する方法について解説します。
事前準備
次の表記が統一されていない電話番号の一覧を用意します。

データの加工
Text.Selectで数字のみを抽出する
「列の追加」タブを開き、「カスタム列」をクリックします。

「新しい列名」に電話番号(表記統一)などの列名を入力し、「カスタム列の式」に数字のみを抽出する数式を入力し、OKをクリックします。

数式は以下になります。Text.Selectを使って、半角数字の0~9、全角数字の0~9を抽出しています。
= Text.Select([電話番号], {"0".."9","0".."9"})

このままだと、全角と半角が混ざってしまうため、半角に統一していきます。
全角数字を半角に変換する
Excelであれば、半角への変換はASC関数を、全角への変換はJIS関数を使えば簡単に変換できます。
しかし、Power Queryには半角全角を変換する便利な関数はありませんので工夫する必要があります。
「カスタム列の式」を次のように修正します。
= Text.Combine(List.ReplaceMatchingItems(
Text.ToList(Text.Select([電話番号], {"0".."9","0".."9"})),
List.Zip(
{
{"0" .. "9"}
,{"0" .. "9"}
}
)
)
)

半角数字に統一されました。

これは何をやっているかと言うと、次の5ステップでデータ加工を行っています。

- Step1Text.Selectを使って、数字のみを抽出する
前述の通り、半角数字の0~9、全角数字の0~9を抽出しています。
Text.Select([電話番号], {"0".."9","0".."9"})
- Step2Text.ToListを使って、抽出した数字をリストに変換する
- Step3List.Zipを使って全角半角の変換リストを作成する
次の式で、全角のリスト{“0” .. “9”}と半角のリスト{“0” .. “9”}を引数に入れます。
List.Zip( { {"0" .. "9"} ,{"0" .. "9"} } )
結果は、全角のゼロと半角のゼロといった、同じ数字で全角、半角の組み合わせのリストが返ってきます。
{ {0, 0}, {1, 1}, {2, 2}, {3, 3}, {4, 4}, {5, 5}, {6, 6}, {7, 7}, {8, 8}, {9, 9} }
このリストを使って、全角→半角へ変換します。
- Step4List.ReplaceMatchingItemsを使って、全角→半角へ変換する
- Step5Text.Combineを使って、リストを結合してテキストに変換する
次のように半角数字で表記が統一されます。

半角数字を全角に変換する
全角→半角への変換方法の解説でしたが、半角→全角への変換はどうすれば良いでしょうか。
List.Zipで全角半角の変換リストを作りましたが、リストの作り方を{全角数字}, {半角数字}から{半角数字}, {全角数字}に並べ替えます。
List.Zip(
{
{"0" .. "9"}
,{"0" .. "9"}
}
)
完成形の数式は次の通りです。
= Text.Combine(List.ReplaceMatchingItems(
Text.ToList(Text.Select([電話番号], {"0".."9","0".."9"})),
List.Zip(
{
{"0" .. "9"}
,{"0" .. "9"}
}
)
)
)
全角数字に表記が統一されました。

