ADVERTISEMENT

【Excel】Power Queryで更新後に列の型が勝手に変わる時の対処法

【Excel】Power Queryで更新後に列の型が勝手に変わる時の対処法
🛡️ 超解決

Power Queryを使ってExcelにデータを取り込む際、更新ボタンを押すたびに列のデータ型が自動で変わってしまう現象に悩んだことはありませんか?数値だった列が文字列になったり、日付が日時に変わったりすると、その後の集計や分析に支障が出ます。この問題はPower Queryの自動型変換機能やソースデータの変更が原因であることがほとんどです。本記事では、列の型が勝手に変わる根本原因を特定する方法と、確実に固定するための実務的な対処手順を解説します。

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

  • 最初に見る場所: 更新後に型が変わった列のクエリステップを確認し、「型の変更」ステップがどの位置にあるかをチェックします。
  • 切り分けの軸: ソースデータの変更が原因か、Power Queryの自動型変換(検出)が原因か、自分で追加した型変換ステップの順序が原因かを切り分けます。
  • 注意点: 会社PCでは管理者権限が必要な設定やアドインの変更は避け、クエリ内で完結する対処法を優先してください。また、ソースファイルの構造を勝手に変えると他のユーザーに影響するため注意が必要です。

ADVERTISEMENT

なぜPower Queryの更新で列の型が勝手に変わるのか

Power Queryはデータを取り込む際に、各列のデータを自動で判別して型を割り当てます。この動作は便利な半面、更新のたびにソースデータの変化に応じて型が変わる原因にもなります。主な原因は次の3つです。

  • ソースデータの変更: CSVやExcelファイルの列に数値と文字列が混在すると、Power Queryはサンプルデータから型を推測します。次回の更新で別のサンプルが先頭に来ると、型判定が変わります。
  • 自動型変換(型検出)の影響: Power Queryは既定で「各列のデータ型を自動検出する」設定になっています。特に「テーブルの結合」や「ファイルの結合」を行うと、新しい列や異なるデータ型が自動で割り当てられることがあります。
  • クエリステップの順序: ユーザーが手動で型変換を追加した場合でも、そのステップがソースの読み込みより前にあると、後の処理で上書きされる可能性があります。また、他のステップ(列の削除、値の置換など)が型変換に影響を与えることもあります。

これらの原因を理解した上で、実際にどのように切り分けと対処を行えばよいのかを、次のセクションで詳しく説明します。

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

根本原因を特定するための切り分け手順

列の型が勝手に変わる問題を解決するには、まず原因を正しく特定することが重要です。以下の手順で切り分けを行ってください。

  1. 更新前後の列の型を記録する: Power Queryエディターを開き、問題の列がどの型になっているかをメモします。次に「閉じて読み込む」で更新を実行し、再びエディターを開いて変更後の型を確認します。
  2. クエリのステップを確認する: 右側の「適用したステップ」ウィンドウで、各ステップのアイコンをクリックして列の型がいつ変わったかを追跡します。特に「型の変更」ステップがない場合、自動検出が原因の可能性が高いです。
  3. ソースデータを直接開いて確認する: ExcelファイルやCSVを直接開き、問題の列に想定外のデータ(数値列に「N/A」などの文字列)が含まれていないか調べます。
  4. 自動型検出を一時的にオフにする: Power Queryエディターで「ホーム」タブ→「データ型の自動検出」を「しない」に変更して更新し、型が安定するかテストします。
  5. 新しいクエリで同じソースを読み込んで比較する: 別のクエリで同じソースを読み込み、自動型変換されていない状態と比較することで、既存クエリのステップに問題があるかどうかを判断します。

これらの手順を踏むことで、原因がソースデータ側にあるのか、Power Queryの設定側にあるのか、クエリの記述側にあるのかを絞り込めます。次のセクションでは、状況別の対処法を比較表でまとめます。

状況別の比較表:原因と最適な対処法

症状 主な原因 推奨される対処法 注意点
数値列が文字列に変わる ソースデータに文字列(例:空文字、記号)が混入 型変換ステップを最後に追加し、「エラー置換」で未解決値を処理 エラー行を削除するとデータ欠損が発生する可能性
日付列が日時に変わる 自動型検出が「日付/時刻」と判断 「型の変更」で日付に固定、または「各列のデータ型」を手動設定 時刻部分が0:00になるが表示上は影響なし
列全体の型が変わるわけではないが一部の行でエラー ソースデータの型が混在している 「テーブルのプレビュー」でエラー行を特定し、クエリエディターで変換 変換関数(Text.Fromなど)を使う場合はパフォーマンスに注意
更新するたびに異なる型に変わる ソースファイルの先頭行が毎回変わる(CSVなど) 「データ型の自動検出」をオフにし、明示的な型変換を追加 すべての列の型を手動で設定する必要がある

この表を参考に、自分の状況に合った対処法を選んでください。次のセクションでは、代表的な対処方法を具体的な手順で説明します。

ADVERTISEMENT

列の型を固定する具体的な対処方法

方法1:手動で型変換ステップを追加する

最も確実な方法は、Power Queryエディターで明示的に型変換ステップを追加することです。自動検出に頼らず、自分が意図した型を最後に適用することで、更新後も型が維持されます。

  1. Power Queryエディターを開き、問題の列を選択します。
  2. 「ホーム」タブの「データ型」グループで、希望のデータ型(例:整数、日付など)をクリックします。
  3. 表示されるダイアログで「現在の型を置き換える」を選択し、「OK」をクリックします。
  4. 「適用したステップ」の最後に「型の変更」ステップが追加されたことを確認します。
  5. 必要に応じて、最初の「ソース」ステップの直後にも型変換を追加し、二重に固定します。

方法2:自動型検出を無効にする

Power Queryの自動型検出機能をオフにすることで、型が勝手に変わるリスクを根本から減らせます。ただし、すべての列の型を手動設定する必要があります。

  1. Power Queryエディターで「ホーム」タブを開きます。
  2. 「データ型の自動検出」のドロップダウンから「しない」を選択します。
  3. 確認ダイアログで「OK」をクリックします。
  4. その後、必要な列すべてに手動で型を設定します。
  5. 変更を適用し、更新後も型が変わらないことを確認します。

方法3:ソースデータの前処理で型を統一する

ソースデータ自体に原因がある場合、Power Query内で前処理ステップを追加してデータをクレンジングします。例えば、数値列に文字列が混入している場合は、その文字列を置換または削除します。

  1. Power Queryエディターで該当列を選択し、「変換」タブ→「値の置換」をクリックします。
  2. 置換したい文字列(例:「N/A」)を指定し、空欄または0に置き換えます。
  3. すべての異常値を処理したら、最後に型変換ステップを追加します。
  4. 「閉じて読み込む」で更新し、型が安定するか確認します。
  5. それでも問題が解決しない場合は、異常値のパターンをさらに調べて対応します。

これらの方法を組み合わせることで、ほとんどの場合で型の自動変更を防止できます。ただし、注意すべき失敗パターンもあるため、次のセクションで解説します。

失敗パターンと注意点

型変換ステップを追加しても型が変わってしまうケース

手動で型変換を追加したのに更新後にまた変わってしまう場合は、型変換ステップの位置が原因です。Power Queryはステップを上から順に適用するため、後から追加されたステップで型が上書きされることがあります。例えば、「削除された列」や「ピボット解除」などの変換が型変換の後にあると、その変換によって列の型が再度推測されます。解決策は、型変換ステップをすべての変換の最後に移動することです。「適用したステップ」で型変換ステップをドラッグして一番下に移動させてください。

エラーが発生して更新が止まるケース

型変換を強制した結果、変換できないデータがあるとエラーが発生し、更新に失敗することがあります。この場合は、まずエラーの原因となっている行を特定し、該当データを適切に処理(置換、削除、別の型への変換)する必要があります。Power Queryエディターで該当セルをクリックすると、エラーの詳細が表示されます。

管理者へ伝えるべき情報

会社の共有データソースを使用している場合、自分のクエリだけでは解決できないケースがあります。以下の情報を管理者に伝えるとスムーズに対応してもらえます。

  • 問題が発生しているクエリ名と列名、更新前後の型の変化
  • ソースデータの種類(Excel、CSV、データベースなど)とアクセス権限
  • Power Queryの自動型検出のオン/オフ状態
  • 他のユーザーでも同じ現象が発生するかどうか

よくある質問(FAQ)

Q1: 型変換をしたのに、なぜか「Any」型になってしまうのはなぜですか?
A: 列に異なる型のデータが混在していると、Power Queryは「Any」型として扱うことがあります。まずデータをクリーニングしてから型変換を行ってください。

Q2: 一度設定した型が更新後にリセットされるのはなぜですか?
A: クエリのソースが外部ファイルの場合、ファイルの内容が変わると自動検出が再実行されるためです。型変換ステップを最後に追加し、自動検出をオフにすることで防止できます。

Q3: 大量の列があるときに効率的に型を固定する方法はありますか?
A: 「列の選択」で複数列を選んで一括で型変換するか、「シフトキー」を使って連続列を選択してから型を指定すると効率的です。また、「M言語」のコードを直接編集して一度に設定することも可能です。

まとめ

Power Queryの更新後に列の型が勝手に変わる問題は、ソースデータの変化や自動型検出、ステップの順序が原因で発生します。原因を切り分けるためには、更新前後の型を記録し、クエリステップを確認しながら自動検出のオン/オフをテストすることが重要です。対処法としては、手動での型変換ステップ追加、自動検出の無効化、ソースデータの前処理が有効です。会社PCでは管理者権限を必要とする設定変更は避け、クエリ内で完結する方法を選んでください。これらの手順を実践すれば、安定したデータ型でPower Queryを利用できるようになります。


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

ADVERTISEMENT

この記事の監修者
📈

超解決 Excel・Word研究班

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

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

ADVERTISEMENT