ADVERTISEMENT

【Excel】Power Queryで列順変更後に別ファイルだけエラーになる時の確認手順

【Excel】Power Queryで列順変更後に別ファイルだけエラーになる時の確認手順
🛡️ 超解決

Power Queryでデータを読み込む際、列の順序を変更した後に特定のファイルだけエラーが発生することがあります。この問題は、クエリが列名ではなく列の位置に依存している場合に起こりやすく、同じフォルダ内の別のファイルでは正常に動作することもあります。本記事では、この現象の原因を切り分けるための具体的な確認手順と、実務で役立つ対処方法を解説します。

【要点】この記事で確認すること

  • 最初に見る場所: Power Queryエディターの「適用したステップ」でエラーが発生したステップを確認し、エラーメッセージを読み取ります。
  • 切り分けの軸: クエリが列名(テキスト)で列を参照しているか、列の位置(インデックス)で参照しているかを特定します。列名依存ならプライバシーレベルやデータソースの変更、列位置依存ならファイルの構造違いが原因です。
  • 注意点: 会社PCでは、クエリのプライバシーレベルを安易に変更しないでください。管理者に確認してから行いましょう。また、「列の並べ替え」ステップを追加する前に、元の列名が変化していないか確認することが重要です。

ADVERTISEMENT

1. なぜ特定ファイルだけエラーになるのか

Power Queryでは、データソースから読み込んだ列をさまざまな方法で変換します。列の順序を変更する操作(「列の並べ替え」や「列の移動」など)は、一見単純ですが、その後のステップで列を参照する方法によっては、異なるファイルでエラーが発生する原因となります。

1.1 列参照の2つの方法

Power QueryのM言語には、列を参照する主な方法として「列名による参照」と「列位置(インデックス)による参照」があります。前者は列名(文字列)で特定するため、列の順序が変わっても影響を受けません。後者は列の番号(0から始まるインデックス)で参照するため、列の順序が変わると異なる列を指してしまいます。

例えば、Table.SelectColumnsやTable.ReorderColumnsなどは、通常は列名を指定しますが、Table.CombineやTable.NestedJoinなどで生成された列は、内部でインデックス参照が使われる場合があります。また、カスタム関数や手動で記述したMコードの中で、列番号を直接使っているケースも該当します。

1.2 ファイルごとに列構造が異なるケース

同じフォルダ内のCSVやExcelファイルでも、列の数や並び順が完全に一致しない場合があります。特に、システムから自動生成されるファイルでは、ヘッダー行の有無や列名の違いが発生しやすく、Power Queryで「最初の行をヘッダーとして使用」する設定がファイルごとに異なる結果を招きます。

このような場合、あるファイルで列順を変更したクエリを別のファイルに適用すると、期待する列が見つからずエラーになります。エラーメッセージには「列が見つかりません」や「インデックスが範囲外です」などが表示されます。

お探しの解決策が見つからない場合は、こちらの「Excelトラブル完全解決データベース」で他のエラー原因や解決策をチェックしてみてください。

2. エラーの種類と原因の特定方法

エラーが発生した際は、まずエラーメッセージの内容を確認しましょう。以下に代表的なエラーとその原因を示します。

エラーメッセージ例 考えられる原因 該当する参照方法
Expression.Error: 列 ‘売上’ が見つかりません。 列名が異なる、または列が存在しない 列名依存
Expression.Error: インデックスが範囲外です。 列の数が想定より少ない、または順序が変わった 列位置依存
DataFormat.Error: データ型変換エラー 列の内容が想定と異なる(数値が文字列など) 列名依存・列位置依存の両方

エラーメッセージから、列名が原因か列位置が原因かをおおまかに判断できます。ただし、複合的な要因が重なることもあるため、次の手順で詳細を確認します。

3. 列順変更後にエラーが発生する3つのパターン

3.1 パターン1:列名が異なるファイルを読み込んだ場合

例えば、元のファイルで「売上金額」という列名だったものが、別のファイルでは「金額」という列名になっている場合、列名で参照しているクエリはエラーになります。このパターンは比較的気づきやすいですが、スペルミスや大文字小文字の違いでも発生します。

3.2 パターン2:列の並び順が異なるファイルを読み込んだ場合

列位置で参照しているクエリでは、列の順序が異なるファイルを読み込むと、誤った列を参照するか、インデックス範囲外エラーが発生します。例えば、3列目のデータを「都道府県」として処理していたのに、別のファイルでは3列目が「市区町村」になっているケースです。

3.3 パターン3:プライバシーレベルが原因で結合エラー

複数のデータソースをマージするクエリで、プライバシーレベルの設定により、列順変更をトリガーとしてエラーが発生することがあります。この場合、エラーメッセージに「外部データソースの統合結果を表示できません」と表示されることが多いです。

ADVERTISEMENT

4. 確認手順(実践的な5ステップ)

以下の手順で、原因を特定し解決策を見つけてください。

  1. エラーが発生しているファイルの列構造を確認する
    エラーになるファイルをPower Queryエディターで開き、「ホーム」タブの「データソース設定」からファイルのプレビューを表示します。列名と列の順序を、正常に動作するファイルと比較してください。
  2. 「適用したステップ」でエラーが発生したステップを特定する
    左側の「クエリの設定」ペインで、各ステップにエラーアイコン(黄色い三角形)が表示されます。エラーが発生したステップをクリックし、数式バーに表示されるMコードを確認します。
  3. 列参照が列名か列位置かを判断する
    数式バーのコードの中で、列を参照している部分が「列名」(例:#”列名”)なのか、インデックス(例:[0]や{0})なのかを確認します。インデックスが使われている場合は、列位置依存の可能性が高いです。
  4. 正常なファイルとエラーファイルの列数を比較する
    Power Queryエディターの「表示」タブで「列のプロファイル」を有効にし、列の数を確認します。フォルダーからファイルを読み込んでいる場合は、サンプルファイルとエラーファイルで列数が異なることがあります。
  5. プライバシー設定を一時的に変更してテストする
    「ファイル」→「オプションと設定」→「クエリオプション」→「プライバシー」で、「プライバシーレベルを無視する」にチェックを入れて再実行し、エラーが解消するか確認します。ただし、これはテスト目的であり、本番環境では元に戻すか、管理者に相談してください。

5. 解決策と再発防止

5.1 列名依存のクエリに書き換える

最も確実な解決策は、列位置参照を列名参照に変更することです。例えば、Table.ColumnNames関数を使い、列名の位置を動的に取得する方法があります。ただし、M言語の知識が必要なため、初心者はPower QueryエディターのUIで操作できる範囲で対処しましょう。

5.2 「列の並べ替え」ではなく「列の選択」で列を指定する

列順を変更する代わりに、必要な列だけを選択する「列の選択」ステップを使うと、列名で指定するため、順序に依存しにくくなります。ただし、すべての列が必要な場合はこの方法は使えません。

5.3 ファイルの列構造を統一する

可能であれば、元のファイルの列構造を揃えるよう、データ提供者に依頼するか、Power Queryの「フォルダーから」接続時に「サンプルファイル」を正しく設定することで、列名の不一致を防げます。

5.4 管理者へ確認する内容

社内ポリシーによっては、プライバシーレベルの変更が禁止されている場合があります。以下の情報を管理者に伝え、指示を仰いでください。

  • どのファイル(パス)でエラーが発生するか
  • 正常なファイルとエラーファイルの列構造の違い
  • プライバシーレベル変更の必要性
  • クエリのMコード(特にエラーステップの数式)

6. よくある質問

Q1. エラーメッセージに「列が見つかりません」と表示されるのですが、列は存在しています。

列名の大文字小文字の違いや、前後にスペースが含まれている可能性があります。Power Queryエディターで列名を正確に確認し、数式内の列名と一致しているかをチェックしてください。

Q2. 列位置依存のクエリを列名依存に変更する具体的な方法を教えてください。

例えば、Table.SelectColumns関数を使っている場合、第2引数にリストで列名を指定します。インデックス参照の部分をTable.ColumnNames関数で置き換えることもできますが、編集にはM言語の理解が必要です。まずはUIで「列の選択」を使うことを検討してください。

Q3. 複数のファイルを結合する際、列順が異なると必ずエラーになりますか?

必ずしもエラーになるわけではありません。Power Queryの「フォルダーから」結合では、すべてのファイルが同じ列構造であることが前提のため、異なる場合はエラーまたはデータの欠損が発生します。事前に列構造を統一するか、クエリ内で列を動的に処理する必要があります。

7. まとめ

Power Queryで列順を変更した後に別ファイルだけエラーになる原因は、列参照の方法が列位置に依存していることと、ファイル間での列構造の違いにあります。エラーメッセージと適用したステップを確認し、列名依存のクエリに書き換えることが根本的な解決策です。会社PCではプライバシーレベルの変更に注意し、必要に応じて管理者に相談しましょう。日頃からファイルの列構造を統一する運用ルールを整えることで、再発を防ぐことができます。


📊
Excelトラブル完全解決データベースこの記事以外にも、様々なエラー解決策をまとめています。困った時の逆引きに活用してください。

ADVERTISEMENT

この記事の監修者
📈

超解決 Excel・Word研究班

企業のDX支援や業務効率化を専門とする技術者チーム。20年以上のExcel・Word運用改善実績に基づき、不具合の根本原因と最短の解決策を監修しています。ExcelとWordを使った「やりたいこと」「困っていること」「より便利な使い方」をクライアントの視点で丁寧に提供します。

🏆
超解決 Excel検定 あなたのExcel実務能力を3分で測定!【1級・2級・3級】

ADVERTISEMENT