PR

【図で分かる!】Power Query 入門 結合できない原因と対策

データ処理 実践
記事内に広告が含まれています。

Power Query は Excel の VLOOKUP 関数などと比べて非常に簡単かつ安定的にテーブルの結合が可能です。

しかし、何故か一部のデータが結合できないということが時々発生します。

このままではせっかくの Power Query の強力なデータ処理を十分活用できなくなってしまいます。

でも大丈夫です。簡単な修正で正しく処理ができるようになることがほとんどです。

この記事では Power Query でテーブル結合ができない原因と対策を分かりやすく解説します。

テーブル結合でつまづいてしまった方は是非ご一読下さい。きっと答えがみつかると思いますよ。

スポンサーリンク

症状A|テキスト列が結合できない

キー列としてテキスト列を使うことは多いと思います。

しかし、テキストは様々なバリエーションがあるのでトラブルも多く発生します。

ここではテキスト列結合のトラブルのよくある原因と対策を解説します。

原因A-1|氏名の間のスペースの違い

社員一覧など氏名が含まれるデータは良くあると思います。

そして、氏名をキーにテーブルを結合するケースも良くあります。

しかし、氏名をキーに結合したら結合できなかったというトラブルもまた良く起こります。

「山田 太郎」 と 「山田 太郎」 というテキストデータ、一見すると同じに見えます。この記事もブラウザで閲覧されるため、その違いが分かりにくいかもしれません。

実はこの二つのデータ、姓と名の間のスペースが一方は 全角スペース で、もう一方は 半角スペース と異なっているのです。

Power Query によるデータ処理は厳密に処理されるので、この微妙な差異でもテーブル結合はできません。

対策A-1|スペースを置換

一方のデータは姓と名の間のスペースが 全角スペース で、もう一方のデータは 半角スペース となっているケースでは、どちらかに統一することが対策となります。

Power Query には文字列を置換する機能がありますので、これを使ってスペースを置換します。

具体的には次の手順でデータ処理を行います。

  1. 置換処理をするクエリを Power Query エディターで開く
  2. 氏名の列を選択
  3. メニューから「変換」>「値の置換」をクリック
  4. ダイアログで「検索する値」に 全角(または半角)スペース を入力
  5. 「置換後」に 半角(または全角)スペース を入力
  6. 「OK」ボタンを押す
  7. Power Query エディターを閉じて、変更を「保持」をクリック

これで 全角(または半角)スペース を 半角(または全角)スペース に置換でき、結合ができるようになります。

原因A-2|大文字と小文字

「Apple」 というテキストデータと 「apple」 というテキストデータ、これは一見して違いが分かります。

データによってはこのように大文字が混じったデータや、全て小文字、または全て大文字というデータがあります。

キー列のデータが大文字や小文字の違いがある場合、Power Query では結合ができません。

対策A-2|Power Query で大文字/小文字 変換

Power Query には英文字を 大文字や小文字に変換 する機能が搭載されていますのでこれを利用します。

次のステップで処理をします。

  1. Power Query エディターで結合するクエリを開く
  2. キー列とする列を選択
  3. メニューから「変換」>「書式」>「小文字(または大文字)」を選択

これで英文字が全て小文字(または大文字)に変換されます。

変換によりキー列の値が揃うことでテーブルが結合できるようになります。

原因A-3|全角文字と半角文字

「ABC」 というテキストデータと 「ABC」 というテキストデータ、これは一見すると同じに見えますが、これは一方が 全角文字 で、もう一方が 半角文字 と異なっています。

結合キーが 全角 と 半角 で異なる場合も Power Query で結合できません。

対策A-3|Excel 関数で変換

実は Power Query には全角/半角を変換する機能がありません。

データは後々の活用を考えてこのような不整合が起きないように作成するのが大切ですが、万一このようなケースに遭遇したら Excel 関数を使って変換するのが最も簡単な対策です。

Excel の ASC() 関数を使うと全角文字を半角文字に変換することができます。しかも、漢字など半角に変換できない文字はそのままとなるのでエラーが起きにくいです。

キー列を ASC() 関数で半角に統一することで結合できるようになります。

原因A-4|固定長データ/前後のスペース

システムから出力されるデータの中には入っている内容にかかわらず文字数が決まっている 固定長のデータ があります。

例えば「ABC」という内容でも、「ABC 」と合計8文字となるような形になります。「ABC」の後ろに5つのスペースが埋まっています。

また、反対に「 ABC」のように冒頭にスペースが入っているようなケースもあります。

このようなデータも結合する相手が「ABC」と3文字のデータになっていると結合できません。

対策A-4|「トリミング」機能を使う

Power Query にはこのようなケースに備えて、「トリミング」機能が搭載されています。

「トリミング」は 前後のスペースを削除 する機能になります。これを活用します。

具体的には次のように操作します。

  1. Power Query エディターで結合するクエリを開く
  2. キー列とする列を選択
  3. メニューから「変換」>「書式」>「トリミング」を選択

この操作を加えておくことで正常に結合できるようになります。

このようにデータを綺麗に整えることを、データ処理の世界では データクレンジング(Data Cleansing) と呼びます。

このようにデータを整えておくことで、テーブル結合などの後工程でのトラブルを無くすことができます。

原因A-5|改行やタブの混入

Excel のセルに値を入力する場合、Alt + Enter キー で改行を入れることができます。

例えば「ABCDEF」というテキストも図のように間に 改行 が入ることがあります。

また、システムから出力されたデータに タブ が含まれる場合もあります。

改行 や タブ は 制御文字 と言われるもので見えない文字になっています。

このような 制御文字 の有無の違いがあるとやはりテーブル結合ができません。

対策A-5|「クリーン」機能を使う

Power Query にはこれにも簡単な対策の機能が搭載されています。

Power Query の クリーン 機能は 改行 や タブ などの制御文字を削除する機能です。

具体的には次のように操作します。

  1. Power Query エディターで結合するクエリを開く
  2. キー列とする列を選択
  3. メニューから「変換」>「書式」>「クリーン」を選択

この処理で無用な制御文字が削除されて無事結合ができるようになります。

この処理もデータを綺麗にする処理なので データクレンジング 処理になります。

症状B|数値列が結合できない

続いては数値列をキー列としてデータを結合する場合のトラブルの原因と対策についてみていきます。

原因B-1|数値に見えるテキスト

数値を表現するケースで、000123 という表示がされる場合があります。

これを ゼロ埋め と呼び、この場合であれば全部で6ケタの数字で表現する方法です。

しかし、実際にはコンピュータはこれは 数値ではなくテキスト として認識しているのです。

同じように 123 と表示されていても、実際には テキスト として表現されている場合があります。

このように人から見ても違いが分かりにくいものではありますが、データ型が違うと テーブル結合はできません。

対策B-1|データ型を揃える

テキスト型 の 000123* と 整数型 の 123 は結合されないので、対策はどちらかのデータ型に揃えることになります。

このようなケースでは 整数型 に揃えるのが簡単です。次にように操作して下さい。

  1. Power Query エディターで結合するクエリを開く
  2. キー列の列名左のアイコンをクリック
  3. サブメニューが出るので 整数 をクリック

同じ操作をして、結合するキー列同士を 同じデータ型 にすることで無事テーブル結合ができるようになります。

【豆知識】整数型 と 10進数型 は値が同じであれば結合できる

同じ数値データでも 整数 と 10進数 という2つのデータ型があります。

整数 は 0, 1, 2, 3… のように小数点や分数を含まない数値です。

10進数 は 1.2345 や 3.14159 など小数点を含む数値です。

テーブル結合する際に、整数型の列と10進数型の列をキー列に指定した場合、値が 123.000 と 123 と同じ値であれば結合できます。

必ずしもデータ型が一致しなければ結合できないという訳ではない ということですね。

症状C|日付列が結合できない

続いては日付データの列をキー列としてデータを結合する場合のトラブルの原因と対策についてみていきます。

原因C-1|日付型 と 日付/時刻型

同じ 2026年1月1日 を表現する場合も、Power Query には 日付型 と 日付/時刻型 という2つのデータ型があります。

日付型 は 年・月・日 までを表現するデータ型です。(例:” 2026-01-01″)

日付/時刻型 は 年・月・日・時・分・秒 までを表現するデータ型です。(例:”2026-01-01 12:00:00″)

日付データが入っている列であってもこの 日付型 と 日付/時刻型 とデータ型が揃っていない場合はテーブル結合ができません。

日付型 と 日付/時刻型 の場合は、たとえ 2026-01-01 と 2026-01-01 00:00:00 と同じように見えるデータであっても数値型とは異なり結合できません。

対策C-1|データ型を揃える

もうお分かりのように、これも結合するキー列のデータ型をどちらかに統一することで対策します。

  1. Power Query エディターで結合するクエリを開く
  2. キー列の列名左のアイコンをクリック
  3. サブメニューが出るので 日付 (または 日付/時刻) をクリック

これで無事テーブルが結合できるようになります。

症状D|結合したはずのデータが消える

テーブル結合をした結果の出力をよく見ると元のデータにはあったデータが消えてしまっていることに気が付くことがあります。

自分が気が付かないところでデータが消えるというのは、仕事で大きなミスにも繋がりかねないので、きちんと対処する必要があります。

原因D-1|「結合の種類」の違い

テーブル結合操作は通常であればデフォルト設定のまま「OK」ボタンを押し続けることで簡単に完了してしまいます。

しかし、途中で重要な設定がなされているのです。それが 結合の種類 の選択です。

テーブル結合操作をする途中で図のようなウィンドウが開きます。ここで 結合の種類 を選択することができます。

結合の種類 は図のように6種類もあります。

一見すると難しそうですが、よく読むと括弧の中に解説が書いてありますので、どのような結合処理がなされるかおおよそ見当がつくと思います。

実はこれら6の結合の種類のうち、完全外部 以外はなんらかの形で結合したデータが消えます。

対策D-1|適切な「結合の種類」を選択

外部結合

上の図で示した 結合の種類 はデフォルトでは 「左外部」 が選択されています。

これは 結合元 のテーブルのデータを 優先扱い として全て出力します。結合させる側 のデータは キーが一致する場合のみデータを付け足す というものになります。

つまり、結合させる側 のデータのうち キーが一致しないデータは消える ということになります。

ちなみに 「右外部」 順番が入れ替わっただけで、結合させる側を優先 する結合です。

内部結合

「内部」 は 双方データでキーが一致するもののみ出力する ものになります。

これはつまり、キーが一致しないものはどちらのデータも消える ということになります。

反結合

「左反」 結合は、結合させる側にキーがある場合は出力しない というものになります。

結合元のキー列が(’A’, ‘B’, ‘C’)で、結合させる側のキー列が(’B’)の場合は、出力は(’A’,’C’)となります。

結合させる側の(’B’)が出力されていないことが分かると思います。

つまり 反結合 では結合させる側のデータは全て消えるということになります。

結合の動作は理解しておかないと危険

このように結合の動作は様々な形データが消えます。

使う側がこの動作を想定して使っている場合は問題ありませんが、よく分からずに使ってしまうと思わぬトラブルになりかねないので注意が必要です。

症状E|空白の同士が結合されない

結合する2つのテーブルのキー列に空白がある場合、同じ空白なので結合されるだろうと考える方も多いかと思います。

しかし同じ空白同士であっても結合されない場合があるので注意が必要です。

原因E-1|null は結合できない

実は同じ空白に見えるデータも次のような種類があります。

  • 文字数ゼロの文字列(””)
  • スペースの文字列(” ”)
  • データが存在しない( null「ヌル」)

何も値が入っていないデータを 数値型や日付型 にした場合にこれが null に変換されます。

また、テキスト型 であってもデータベースからデータを取得した場合には null が入ることがあります。

null はただの空白ではなく 「データが存在しない」 という扱いなので、キー列に null 同士があってもこれらは結合されません。

対策E-1|null を置換する

Power Query は値を置換する機能がありますので、null をある値に置換します。

置換する値は他のキー値と重複しないようにする必要があります。

例えば日付であれば 1900-01-01 のように通常では使わないような値にしておくのがトラブル回避になります。

まとめ

Power Query のテーブル結合は簡単に操作ができ、VLOOKUP関数のように面倒な注意点がほとんどないので非常に便利です。

しかし、Power Query は正確に動作するがゆえに場合によってはデータがうまく結合できないことがあります。

この記事では Power Query でデータを結合できない原因とその対策を紹介させて頂きました。

この記事で紹介した内容を理解しておけば大抵のトラブルには対処できると思います。

Power Query の強力なテーブル結合機能、これらのトラブル回避策を頭に入れて是非活用してみて下さい。

他の参考記事

テーブル結合の基本について学びたい方は是非次の記事をご覧ください。

タイトルとURLをコピーしました