BI探検ノート

Power Query で全角の英数字を半角にそろえる方法

約5分

濵口 翔長崎で、Power BI のつまずきを記録しています
目次
  1. 前提
  2. 困りごと1: 同じ値が、別々に並ぶ
  3. 困りごと2: 全角の数字は、数値にならない
  4. 直し方: 文字の番号で、半角にする
  5. 公式の記載との照合
  6. この記事で確認できたこと・できていないこと
  7. 参考

確認日2026年10月24日。Power BI Desktop(日本語版、2.159.883.0)で、ダミーの CSV を使って確かめました。確認できていないことは、末尾にまとめました。

日本の CSV には、全角の英数字(「A店」「1200」)と、半角(「A店」「1200」)が混ざっていることがあります。Power Query では、全角と半角は、別の文字です。同じ店なのに、別々に数えられたり、数値に変えられなかったりします。半角にそろえる方法を、確かめました。

結論(30秒版)

  • 「フィルター」の一覧で、「1200」と「1200」が、別の値として並びました。
  • 全角の数字「1200」の列を、データ型の「整数」に変えると、Error になりました(半角の「1200」は、そのまま変わりました)。
  • 文字の番号(Unicode)を使うカスタム列で、全角の英数字を半角にそろえると、「A店」と「A店」が1つにまとまり(数えると 2)、数字も半角になりました。
  • 半角カナ(アイウ)は、変わりませんでした。この式は、全角の英数字と記号(!〜~)と、全角の空白だけを、半角にします。

前提

ダミーの CSV(UTF-8、5行)です。中身は、次のとおりです。

店舗名金額
A店(全角)1200(全角)
A店(半角)1200(半角)
B店(全角)800(全角)
アイウ店(半角カナ)500
C店 (全角の C と、後ろに半角の空白)300

Power Query エディターで開くと、列の見出しが、「Column1」「Column2」になったので(全部が文字の CSV は、見出しが昇格されない、別の記事と同じです)、「1行目をヘッダーとして使用」を押しました。

困りごと1: 同じ値が、別々に並ぶ

「金額」の列の、フィルターの一覧を開くと、「1200」と「1200」が、別の項目として出ました。

金額の列のフィルターの一覧。「1200」「300」「500」「1200」「800」が、別々に並んでいる

困りごと2: 全角の数字は、数値にならない

金額の列の型を「整数」に変えました。半角の行は、数値になりましたが、全角の行(1200、800)は、Error になりました。

型を整数に変えたあとの表。1行目(全角の1200)は Error、2行目(半角の1200)は 1200、3行目(全角の800)は Error、4行目は 500、5行目は 300

直し方: 文字の番号で、半角にする

全角の英数字と記号は、Unicode の番号が、半角より、65248 だけ大きい(「!」の 65281 から「~」の 65374 まで)、という並びになっています。この差を使って、半角にしました。

「列の追加」タブの「カスタム列」で、次の式を入れました(新しい列名は、「店舗名_半角」)。

Text.Combine(
    List.Transform(
        Text.ToList([店舗名]),
        each
            let n = Character.ToNumber(_)
            in
                if n >= 65281 and n <= 65374 then Character.FromNumber(n - 65248)
                else if n = 12288 then " "
                else _
    )
)
  • Text.ToList で、文字を1つずつに分けます。
  • Character.ToNumber で、文字の番号を出します。
  • 番号が 65281〜65374 なら、65248 を引いて、半角にします。全角の空白(12288)は、半角の空白にします。それ以外は、そのままです。
  • Text.Combine で、つなぎ直します。

「カスタム列」のダイアログ。新しい列名は「店舗名_半角」。式は、Text.Combine と List.Transform を使う。「構文エラーが検出されませんでした」と出ている

金額の列にも、同じ式を、「金額_半角」の名前で足しました([店舗名] を [金額] に変えます)。

結果は、次のとおりです。

カスタム列を足した表。店舗名_半角は、A店、A店、B店、アイウ店(半角カナのまま)、C店。金額_半角は、1200、1200、800、500、300

「店舗名_半角」で、店舗ごとの行数を数える(グループ化)と、次のようになりました。

店舗名_半角でグループ化した結果。A店が2、B店が1、アイウ店が1、C店が1

  • A店が 2: 全角の「A店」と、半角の「A店」が、1つにまとまりました。
  • B店は 1、C店は 1 です。
  • アイウ店は、半角カナのままでした。

「金額_半角」は、文字の列のままです。数値にするときは、このあとで、データ型を「整数」に変えます(半角にそろえたあとの、型の変更は、この記事では、試していません)。

公式の記載との照合

Microsoft Learn(英語版、確認日 2026年10月24日)と、私の観察を、突き合わせました。

  • Character.ToNumber は、文字の、Unicode の番号(21ビットのコードポイント)を返す、Character.FromNumber は、その逆で、番号から文字を返す、と書かれています。式の中の動きと、同じです。
  • Text.ToList は、文字のリストを返す、と書かれています。
  • Number.FromText は、数値の文字を、数値にする関数で、「一般的な数値の形式」を受けつける、と書かれています。全角の数字が、その形式に入るかは、書かれていませんでした。私の画面では、Error でした。

この記事で確認できたこと・できていないこと

確認日: 2026年10月24日。Power BI Desktop(Windows、日本語版、2.159.883.0、未サインイン)、ダミーの CSV 5行。

確認できたこと

  • 全角と半角が、別の値として扱われること(フィルターの一覧、グループ化)
  • 全角の数字の列を、整数に変えると Error になること
  • 上の式で、全角の英数字を半角にして、「A店」と「A店」が1つにまとまること
  • 半角カナが、変わらないこと

確認できていないこと

  • 半角にそろえた列を、データ型の「整数」に変えた結果
  • 全角の記号(「-」「、」「(」など)の、すべての動き(式の範囲は、「!」から「~」ですが、画面では、英数字だけを見ました)
  • 半角カナを全角にそろえる方法
  • 大きなデータでの速さ(文字を1つずつ処理するので、遅いかもしれません)
  • 列を、置き換える形(元の列を、直接、変換する形)での使い方
  • Power BI サービスでの動作、英語版での名称

参考

この記事で使った用語

Power BI Desktop
Windows で動く、レポートを作るためのアプリです。データの取り込みとモデルの作成、レポートの作成に向いています。

用語集をすべて見る