ADVERTISEMENT

【Excel】Power Queryでシート名変更後に参照エラーになる時の直し方

【Excel】Power Queryでシート名変更後に参照エラーになる時の直し方
🛡️ 超解決

Power QueryはExcelでデータを加工・統合する強力な機能ですが、参照元のシート名を変更するとクエリがエラーを起こすことがあります。特に、他のユーザーと共有しているブックや定期的に更新するレポートで、意図せずシート名を変えてしまった場合に「Expression.Error: The column … of the table wasn’t found.」などのメッセージが表示され、データが取得できなくなります。この記事では、シート名変更に伴うPower Queryの参照エラーの原因を特定し、確実に修正する方法を手順を追って解説します。また、よくある失敗パターンや管理者に確認すべき設定についても触れ、再発防止のヒントを提供します。

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

  • 最初に見る場所: Power Queryエディターの「適用したステップ」で、ソースを参照しているステップ(例:「ソース」「ナビゲーション」)を確認します。エラーの原因は、シート名をハードコードしている箇所です。
  • 切り分けの軸: エラーが発生するタイミングが「クエリの更新時」か「シート名変更直後」かで、修正箇所が異なります。前者はクエリ内の参照を、後者は参照元のシート名を戻すかクエリを再設定します。
  • 注意点: 会社PCで共有されているブックの場合、シート名を勝手に変更すると他のユーザーのクエリにも影響します。修正後は必ず他の利用者に連絡し、クエリ更新を促してください。

ADVERTISEMENT

シート名変更でPower Queryがエラーになる原因

Power Queryは、データの取得元としてシート名やセル範囲を固定的に参照します。例えば、クエリ作成時に「Sheet1」というシートからデータを取得する設定をすると、クエリ内のM言語で#”Sheet1″というテキストがソースとして記録されます。その後、そのシート名が「売上データ」に変更されると、クエリは元のシート名を見つけられずエラーになります。これは、Power Queryがデフォルトでシート名を動的に追跡しないからです。

また、Excelテーブル(リスト形式)を参照している場合も、テーブル名はシート名に依存しないため、シート名の変更だけではエラーになりにくいですが、テーブルがシートに直接バインドされている場合には影響を受けることがあります。主なエラーメッセージとしては、「Expression.Error: The column ‘…’ of the table wasn’t found.」や「DataFormat.Error: We couldn’t find the specified Excel worksheet.」などが表示されます。

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

参照エラーを直すための基本手順

エラーを修正するには、クエリのソースを現在のシート名に変更するか、動的な参照に切り替える方法があります。以下に、具体的な手順を順を追って説明します。

  1. Excelで「データ」タブから「クエリと接続」をクリックし、右側の作業ウィンドウを表示します。
  2. エラーが発生しているクエリを右クリックし、「編集」を選択してPower Queryエディターを開きます。
  3. 右ペインの「適用したステップ」で、最初のステップ(多くの場合「ソース」)をクリックします。数式バーにソースのパスが表示されます。
  4. 数式バー内のシート名部分(例:”Sheet1″)を、新しいシート名(例:「売上データ」)に書き換えます。シート名はダブルクォーテーションで囲まれていることを確認してください。
  5. Enterキーを押すか、数式バーのチェックボタンをクリックして変更を確定します。エラーが解消されたかどうか、プレビューで確認します。
  6. 「閉じて読み込む」をクリックし、クエリを再度実行します。これで参照エラーが解消されるはずです。

もし複数のステップでシート名を参照している場合(例えば「ナビゲーション」ステップなど)、各ステップの数式を確認し、同様に修正します。ただし、ほとんどのケースでは最初の「ソース」ステップのみで十分です。

シート名が不明な場合の対処法

シート名を忘れてしまった、または多数のシートがある場合は、Power Queryエディターの「ホーム」タブから「データソースの設定」をクリックし、現在のワークブック内の利用可能なシートを確認できます。また、ブック内のシート名をリストアップするには、VBAを使うか、Excelのシート見出しを直接確認するのが確実です。

テーブル名を利用した動的な参照方法

シート名に依存しないようにするには、データ範囲をExcelテーブル(挿入→テーブル)に変換し、そのテーブル名をPower Queryで参照します。テーブル名はシート名が変わっても影響を受けません。既存のクエリをテーブル参照に変更する手順は以下のとおりです。

  1. 元のデータシートで、データ範囲を選択し、Ctrl+Tでテーブルに変換します。テーブル名は分かりやすい名前(例:’売上テーブル’)に変更します。
  2. Power Queryエディターで既存のクエリを開き、「ソース」ステップの数式を、’Excel.Workbook(File.Contents(“パス”), null, true){[Name=”売上テーブル”]}[Data]’ のように変更します。パスは実際のファイルパスに置き換えてください。
  3. 変更後、エラーが消えていることを確認し、クエリを読み込みます。

失敗しやすいパターンと注意点

以下のような状況で、Power Queryのエラーが発生しやすくなります。事前に対策を講じておきましょう。

  • シート名変更後にクエリを更新しないで放置する: シート名を変えた直後はエラーは表示されませんが、次にクエリを更新したときにエラーになります。変更後は必ずクエリを更新して確認してください。
  • 共有ブックで他のユーザーがシート名を変更する: 複数人で編集しているブックでは、誰かがシート名を変えると全員のクエリがエラーになります。チームでシート名の命名ルールを決めたり、テーブル名を参照するように統一するとよいでしょう。
  • シート名に使えない文字を含める: シート名に角括弧[]や引用符が含まれていると、Power Queryで正しく認識されない場合があります。英数字とアンダースコアのみを使用することを推奨します。
  • ソースが外部ファイルの場合: 外部のExcelファイルを参照している場合、そのファイルのシート名が変更されると同様にエラーになります。外部ファイルの場合は、毎回手動で修正するか、パラメータを使ってシート名を可変にする方法があります。

ADVERTISEMENT

状況別の比較表

参照の種類 シート名変更の影響 修正の難易度 推奨設定
シート名ハードコード 変更後、必ずエラー発生 低(シート名書き換えのみ) 一時的な修正に有効
テーブル名参照 影響なし(テーブル名固定) 中(テーブル化+クエリ修正) 長期的に安定
パラメーターによる動的参照 影響なし(設定で変更可能) 高(パラメーター作成+関数) 頻繁にシート名が変わる場合
外部ファイル参照 外部ファイルのシート名変更でエラー 中(ファイルパス+シート名修正) 外部ファイルは変更しない運用

管理者に確認すべき設定と代替手段

組織で共有しているExcelブックでPower Queryを使用している場合、管理者が設定できる項目があります。特に、以下の点を確認するとよいでしょう。

  • Power Queryの自動更新設定: ブックの共有設定によっては、クエリの自動更新が無効になっている場合があります。「データ」タブの「クエリのプロパティ」で、更新頻度を確認してください。
  • リストやテーブルの使用を推奨するポリシー: シート名変更による影響を避けるため、部門全体でデータソースはテーブルとして管理するルールを策定すると、トラブルが減ります。
  • 外部データソースのアクセス権限: 外部ファイルやデータベースを参照している場合、権限がないとエラーが解消しないことがあります。管理者にファイルパスや認証情報の確認を依頼してください。

代替手段:Power Query以外の方法

どうしてもPower Queryでの修正が難しい場合は、以下の代替手段も検討してください。

  • INDIRECT関数を使う: Excel関数でシート名を動的に参照する方法です。ただし、大量データには不向きです。
  • VBAマクロでクエリを再生成する: シート名変更を検知して自動的にクエリを修正するマクロを作成することも可能です。ただし、VBAの知識が必要です。

よくある質問(Q&A)

Q1: シート名を戻したらエラーは自動で直りますか?
A: シート名を元に戻せば、クエリは正しく動作します。ただし、クエリを一度更新する必要があります。自動更新がオフの場合は手動で更新してください。

Q2: 複数のクエリで同じシートを参照している場合、一括で修正する方法はありますか?
A: 残念ながら、Power Queryには一括置換機能はありません。各クエリを個別に編集するか、テーブル名参照に切り替えることで今後の修正を減らせます。

Q3: 外部ファイルのシート名が頻繁に変わる場合、どうすればよいですか?
A: パラメーターを使ってシート名を可変にするか、Excelテーブルとして保存しておくことをお勧めします。Power Queryでパラメーターを作成するには、「パラメーターの管理」から追加できます。

Q4: エラーメッセージが「DataFormat.Error: File not found」と出るのですが?
A: これはシート名ではなくファイルパス自体が間違っている可能性があります。データソースの設定でファイルパスを確認し、正しいパスに修正してください。

Q5: シート名にスペースや記号が含まれているとエラーになりますか?
A: 通常は問題ありませんが、角括弧[]や引用符は使わないでください。シート名に特殊文字がある場合は、シート名をダブルクォーテーションで囲む必要があります。

まとめ

Power Queryでシート名変更後に発生する参照エラーは、クエリ内のシート名を新しい名前に書き換えることで簡単に修正できます。ただし、根本的な解決には、データソースをテーブル名で参照する方法に切り替えるのが効果的です。共有ブックではシート名の変更ルールを決めたり、テーブル利用を推奨することで、再発を防止できます。エラーが発生した際は、まず「適用したステップ」のソースを確認し、シート名がハードコードされていないかチェックしましょう。日頃から動的な参照を心がけることで、予期せぬトラブルを減らせます。


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

ADVERTISEMENT

この記事の監修者
📈

超解決 Excel・Word研究班

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

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

ADVERTISEMENT