shikumika’s diary

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

【Power Query】「キーがテーブルのどの行とも一致しませんでした」の原因と解決例

Power Queryで「更新」を実行すると、

[Expression.Error]キーがテーブルのどの行とも一致しませんでした。

というエラーが発生することがあります。

よくある原因と解決例の備忘録です。

内容:

なお、確認のExcelは「Microsoft® Excel® for Microsoft 365 MSO」(バージョン2502)です。

エラー内容

[Expression.Error]キーがテーブルのどの行とも一致しませんでした

このエラーが発生する原因はいくつかありますが、従来動作していたPowerQueryで突然発生した場合は、元データの形式が変更になっている可能性が高いです。

例:「シート名」が変更になった等(元々、シート名を固定で設定しているとき)

Power Query で、キーがテーブル内の行と一致しなかったというエラーが返される理由は多数あります。 このエラーが発生すると、マッシュアップ エンジンでは、検索しているテーブル名を見つけることができません。 このエラーが発生する理由は次のとおりです。

  • テーブル名が (たとえば、データ ソース自体で) 変更された。

(後略)

Power Query での作成に関する一般的な問題 - Power Query | Microsoft Learn

具体的な事象と対応例

エラーメッセージの画面

Power Queryで「更新」を実行すると、以下のエラーが表示されてデータ更新が完了できません。

エラーが表示され、更新されません

[Expression.Error]キーがテーブルのどの行とも一致しませんでした
PowerQueryの編集画面でエラー発生箇所の確認

PowerQueryの編集画面(Power Query Editorの起動)で、最終ステップから順番にステップを確認し、エラーが最初に発生しているステップを確認します。

このケースでは、次のTable.SelectColumnsによるテーブル変換で、Errorが発生していました(この事例では、売上データ2023年5月.xlsxのみエラーになっています)

そこで、元のデータを確認してみるとシート名が違うために、エラーとなっていました。

適切に変換されたシート名と、エラーになっていたシート名が違いました

シート名違いによりエラーが発生(シート名を固定設定していたので)

このケースでは、PowerQueryで、Excelのシートを特定して取り込む設定をしたクエリでした。クエリ変更するのは少し慣れも必要なので、元データのシート名を変更でエラーを解決しました。

= (パラメーター1) => let
        ソース = Excel.Workbook(パラメーター1, null, true),
        売上_Sheet = ソース{[Item="売上",Kind="Sheet"]}[Data],
        昇格されたヘッダー数 = Table.PromoteHeaders(売上_Sheet, [PromoteAllScalars=true])
    in
        昇格されたヘッダー数

以上、Power Queryで「[Expression.Error]キーがテーブルのどの行とも一致しませんでした」の原因と解決例でした。