Power Queryを使って複数のテーブルを結合する際、キーとなる列の値が全角と半角で混在していると、意図した結合結果が得られないことがあります。たとえば顧客コード“12345”が一方は半角、もう一方は全角“12345”で入力されていると、Power Queryはこれらを異なる値とみなし、結合に失敗します。このようなトラブルは、手入力が多いデータや外部システムから取り込んだデータで特に発生しやすい問題です。本記事では、Power Queryのマージ機能で全角半角の違いを無視して結合できるようにする具体的な手順を、原因の解説から代替案まで含めて詳しく説明します。
【要点】この記事で確認すること
- 最初に見る場所: 結合に使っているキー列に全角半角の混在がないか、データのプレビューで確認してください。
- 切り分けの軸: 問題が全角半角の違いによるものか、それともスペースや改行、表記ゆれ(例:株式会社と㈱)などの別の原因かを区別します。
- 注意点: 会社PCでは共有クエリや組織のデータソース設定を変更する前に、管理者またはチームに影響を確認してください。また、元データを書き換えるのではなくPower Query内で変換することを推奨します。
ADVERTISEMENT
目次
なぜ全角半角の違いで結合が失敗するのか
Power Queryのマージ(結合)操作は、キー列の値が完全に一致する場合にのみ行を結合します。全角の“A”と半角の“A”は、画面上では似ていても内部的には異なるUnicodeコードポイントが割り当てられています。たとえば半角の「A」はU+0041、全角の「A」はU+FF21です。Power Queryはデフォルトでバイナリ比較を行うため、これらを同一と認識しません。同様に数字や記号にも全角半角の区別があり、結合条件から漏れる原因となります。特に以下のようなシチュエーションで顕著です。
- 異なるシステムからエクスポートされたデータを統合するとき(例:基幹系システムは半角、Web入力フォームは全角)
- ユーザーが手入力したデータで、キーボードの入力モードを切り替えずに数字や英字を入力した場合
- CSVファイルを読み込むとき、元の文字コードやエンコードの影響で文字種が統一されていない場合
症状の確認と原因の切り分け
結合結果が想定より少ない、またはNULLになる
マージを実行した後、結合後のテーブルに新しい列が追加されたものの、多くの行が「null」になっている、あるいは行数が減った場合は、キーが一致しなかった可能性があります。その際、まず以下の手順で原因を切り分けてください。
- 元の2つのテーブルをPower Queryに読み込み、それぞれのキー列をテキストとして表示します。
- 両方のテーブルから、結合されるべき行を1件抽出して、キー値をコピーします。
- コピーした値をテキストエディタなどに貼り付け、文字の幅(全角か半角か)を目視で確認します。たとえば「12345」と「12345」では明らかに文字の横幅が異なります。
- ExcelのLEN関数とLENB関数を使っても確認できます。半角英数字はLENBで1バイト、全角は2バイトとカウントされます。
- 問題が全角半角のずれだけであれば、後述の変換手順で解決できます。それ以外の原因(スペース、改行、ひらがなとカタカナ、異体字など)の場合は別の対処が必要です。
全角半角以外の表記ゆれにも注意
全角半角に加えて、以下のような表記ゆれも結合を阻害するため、併せて確認しましょう。
- 余分なスペース: 先頭や末尾、文字間のスペース(全角スペースと半角スペースの混在)
- 改行・タブ: CSVの引用符内に埋め込まれた改行など
- 大文字小文字: Power Queryはデフォルトで大文字小文字を区別します(ただし比較オプションで変更可能)
- 数字の書式: 文字列として保存されている数字と数値型の比較
Power Query内で全角半角を統一する変換手順
最も確実な方法は、マージを行う前にキーとなる列に対して全角半角を統一する変換を適用することです。Power Queryエディターで以下の手順を実行してください。
- Power Queryエディターを開き、結合元のテーブル(左側のテーブル)を選択します。
- キー列を右クリックし、「変換」→「書式設定」→「半角に変換」を選びます。これで全角英数字・記号が半角になります。全角カタカナは変換されません。
- 同様に、結合先のテーブル(右側のテーブル)についても同じキー列に対して「半角に変換」を適用します。
- 「半角に変換」だけでは対応できない全角カタカナを含む場合、別の方法としてカスタム列を追加して「Text.Combine」や「Text.Transform」を使うこともできますが、ここでは標準機能に絞ります。
- 必要に応じて、「大文字小文字の変換」も同時に行います。たとえば「Text.Upper」で大文字に統一すると比較が簡単になります。
- 両方のテーブルで変換が完了したら、ホームタブの「マージ」から結合を実行します。このとき、変換後の新しい列ではなく、変換前の元の列を使わないよう注意してください。
注意点として、Power Queryの「半角に変換」は全角の英字、数字、一部記号(!"#$%&'()*+,-./:;<=>?@[\]^_`{|}〜など)を半角に変換しますが、全角のひらがな・カタカナ・漢字には影響しません。もしカタカナの全角半角(例:カタカナの「カ」と半角カタカナ「カ」)を統一したい場合は、別途追加の変換(カスタム関数)が必要です。
ADVERTISEMENT
変換方法の比較:Power Query標準 vs カスタム関数
| 方法 | 手順 | デメリット | |
|---|---|---|---|
| 「半角に変換」標準機能 | 列を右クリック → 変換 → 書式設定 → 半角に変換 | 操作が簡単、コード不要 | 全角カタカナには非対応 |
| カスタム列+M関数 | カスタム列を追加し、 例: Text.Transform([キー], each if Character.Number.ToNumber(_) >= 0xFF01 and Character.Number.ToNumber(_) <= 0xFF5E then Character.Number.FromNumber(Character.Number.ToNumber(_) - 0xFEE0) else _) |
全角カタカナや特殊記号にも対応可能 | M言語の知識が必要、保守がやや難しい |
| Power Query の「大文字小文字の変換」と組み合わせ | 変換後に「UpperCase」や「LowerCase」を適用 | 英字の大小を無視できる | 全角・半角変換は別途必要 |
| データソース側で前処理 | 元のExcelシートで関数(JIS, ASC)を使って変換 | 元データを統一できる | 元データを変更するため影響範囲に注意 |
よくある失敗パターンと対処
変換後の列をマージキーにしていない
Power Queryで変換を適用すると、元の列が置き換えられるか、新しい列が追加されます。「半角に変換」は元の列を直接変更しますが、カスタム列を作成した場合、マージ時にその新しい列をキーとして指定しなければなりません。うっかり元の列を選んでしまい、「なぜか結合できない」という状態になることがあります。マージ後は必ずキー列の適用したステップを確認してください。
片方のテーブルだけ変換してしまう
マージは両方のテーブルのキーが一致する必要があります。一方だけ変換しても、もう一方が変換前のままなら不一致は解消しません。両方のテーブルで同じ変換を忘れずに適用してください。
変換後にデータ型が変わってしまう
「半角に変換」はテキスト型の列にのみ適用できます。もしキー列が数値型や日付型になっていると、変換メニューが表示されないか、エラーになります。事前に列のデータ型を「テキスト」に変更しておいてください。
管理者へ確認すべきこと
社内の共有データソースやPower BIのデータセットを使用している場合、変換を加えたクエリが他のユーザーにも影響を与える可能性があります。以下の点を管理者またはチームリーダーに確認しましょう。
- 変換処理を適用するクエリが共有のものか、個人用か
- データソースがデータベースや共有フォルダにある場合、直接変換を加えるのではなく、Power Queryのステップとして追加する方が安全
- 組織の標準として、全角半角の扱いに関するガイドラインがあるかどうか
- もし元データの入力を半角に統一できるなら、根本的な解決になるため、運用ルールの検討を提案する
よくある質問
Q1: 「半角に変換」で全角カタカナも半角になりますか?
A: なりません。「半角に変換」は主に全角英数字と一部記号を対象としており、全角カタカナ(例:ア)は変換されません。半角カタカナ(ア)にしたい場合は、カスタム関数を使用するか、Java Scriptを利用した外部エディタでの処理が必要です。ただし、半角カタカナはデータの相互運用性で問題を起こすこともあるので、逆に全角に揃えることも検討してください。
Q2: Power Queryのマージで大文字小文字を区別しないようにできますか?
A: はい。マージのダイアログで「大文字と小文字を区別する」のチェックを外すことで、大文字小文字を無視できます。ただしこれは全角半角の違いには影響しません。
Q3: 変換せずに結合する方法はありますか?
A: 直接方法はありません。Power Queryのマッチングは厳密一致が基本です。代わりに、あいまい一致を行う「Fuzzy Merge」オプション(Power Queryの詳細オプション)を使うこともできますが、これは類似度に基づくもので、必ずしも全角半角を同一視するものではありません。精度やパフォーマンスの面からも、変換を推奨します。
Q4: 変換したら別のデータが壊れる可能性はありますか?
A: 変換は列全体に適用されるため、すでに半角になっているデータには影響しません。ただし、全角のまま保存したいデータ(例:正式名称)がある場合は、その列を変換しないように注意してください。コピーした列を作成して変換する方法もあります。
まとめ
Power Queryで全角半角の違いにより結合できない問題は、原因を特定し適切な変換を適用することで解決できます。最も簡単な方法は、キー列に「半角に変換」を適用してからマージすることです。もし全角カタカナも含む場合はカスタム関数を検討します。また、大文字小文字や余分なスペースなど他の表記ゆれにも注意し、両方のテーブルで同じ処理を施すことが重要です。元データを変更せずにPower Query内で変換すれば、安全に結合できるようになります。この記事の手順を参考に、全角半角の壁を乗り越えてデータ統合を成功させてください。
ADVERTISEMENT
超解決 Excel・Word研究班
企業のDX支援や業務効率化を専門とする技術者チーム。20年以上のExcel・Word運用改善実績に基づき、不具合の根本原因と最短の解決策を監修しています。ExcelとWordを使った「やりたいこと」「困っていること」「より便利な使い方」をクライアントの視点で丁寧に提供します。
Office・仕事術の人気記事ランキング
- 【Word】差し込み印刷で数字の桁を整える!金額にカンマ(桁区切り)を入れる設定
- 【Teams】メッセージを「保存済み」にして後で読む!重要なチャットをブックマークして整理する技
- 【PDF】PDFのサムネイルプレビューが表示されない!エクスプローラーの設定とAcrobat環境設定
- 【Copilot】「サービスに接続できません」エラーの原因切り分けと対処法
- 【Excel】文字がセルの枠からはみ出す・隠れる!「折り返して表示」と「縮小して全体を表示」の使い分け
- 【PDF】PDFに入力した文字の「フォント・サイズ・色」を変更するプロパティ設定
- 【Word】校閲機能の基本!赤字(変更履歴)とコメントで修正を見える化する
- 【Outlook】添付ファイルが「Winmail.dat」に化ける!受信側が困らない送信設定
- 【Outlook】宛先が「オートコンプリート」に出ない・間違っている時の修正手順|履歴の削除と再構築
- 【PDF】結合するPDFの「用紙サイズ」がバラバラな時、すべてを「A4サイズ」に強制リサイズしてから結合する
