shikumika’s diary

日々の事務作業で手間なことを簡単にできる仕組み(自動化、方法など)、困ったことの解決方法を調べた備忘録

【Power Query】全角を半角に一括置換(Text.Replaceを使う時の注意点)

Power Queryで、全角文字を半角文字に一括置換。Text.Replaceを使った時にエラーが発生して変換できなかったので原因と解決方法の備忘録。

全角文字を半角文字に一括置換が必要になった背景は、Excelで表記ゆれがある日付文字を日付データ(シリアル値)に変換結果に示したとおり、全角文字があるとPower Queryではシリアル値には変換できないため。

 

そのため、変換リストを作成し、Text.Replace関数で一括置換を試みたが、

Expression.Error: 値 1 を型 Text に変換できません。
詳細:
    Value=1
    Type=[Type]

というエラーで、次のような画面になった。

原因と解決方法

型のエラーで、Text.Replace関数で指定した値がText(テキスト)型に変換ができないとのこと。今回のケースは置換後の文字が整数型であったためエラーが発生した模様。”テキスト型”に変更することで、問題なく一括置換できた。

 

補足説明

数字の全角文字を半角文字に一括置換であれば、次に示すようにPower Queryで「値の置換」を使用して、”0”→”0”、”1”→”1”、、、と10回繰り返すことで可能。

shikumika.org

 

ただし、Power Queryを使用した集計・分析では、表記ゆれの解消やフラグ付けなどで置換リストを用いて一括置換をしたい場面がよくある。

そこで、以下を参考にさせていただき、通常はうまく置換ができていた。

qiita.com

 

今回、次のように数字だけの置換リスト(Excelの書式設定では文字列)を作成して実施したところ、冒頭のエラーが発生。

原因は、クエリの段階で、Power Queryの型検出で自動で整数型に設定されていたため。これをテキスト型にすることで無事変換できた。

 

Excelでは、データ型をあまり意識せずに使用していることが多いので、注意が必要。

以上、Power QueryのText.Replace関数でデータ型でのエラーと、解決方法の備忘録でした。