ADVERTISEMENT

【Excel】Power Queryで部署コードの先頭ゼロが消える時の型指定手順

【Excel】Power Queryで部署コードの先頭ゼロが消える時の型指定手順
🛡️ 超解決

会社で部署コードや社員番号など、先頭にゼロが付くコードデータをPower Queryを使ってExcelに取り込んだ際、ゼロが削除されてしまう問題に遭遇したことはありませんか。例えば部署コード「0012」が「12」になってしまう現象です。これはPower Queryのデータ型自動認識が原因で発生します。本記事では、先頭ゼロを保持したまま取り込むための型指定手順を、原因の解説から具体的な操作、失敗パターンまで詳しく説明します。

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

  • 最初に見る場所: Power Queryエディタの「データ型」設定画面。特に「列のデータ型」が数値になっていないかを確認します。
  • 切り分けの軸: 問題が発生するのはPower Queryの取り込み時か、それとも元のデータ自体が数値形式で保存されているか。前者ならPower Queryの型指定で解決、後者はソースデータの形式変更が必要です。
  • 注意点: 会社PCでは共有設定やテンプレートの変更が制限されている場合があります。Power Queryのクエリ設定は個人用ワークブックに保存されるため、管理者権限なしでも変更可能ですが、元データを変更する場合は管理者への相談が必要です。

ADVERTISEMENT

なぜ先頭ゼロが消えるのか:Power Queryの自動型変換の仕組み

Power Queryは、データを読み込む際に各列のデータ型を自動的に判定します。数値のみを含む列は「数値型」と認識され、先頭のゼロは意味を持たないため削除されます。例えば「0012」は数値の「12」として解釈されます。この動作はCSV、Excelテーブル、データベースなどソースを問わず発生します。特に部署コードや製品コードのように桁数が固定されたコードは、先頭ゼロが重要な意味を持つため、テキスト型として扱う必要があります。

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

型指定の基本手順:Power Queryエディタで列のデータ型をテキストに変更する

  1. Excelで「データ」タブ→「テーブル/範囲から」または「CSVから」などを選択し、Power Queryエディタを開きます。
  2. エディタ左側の「クエリ」ペインで対象のクエリを選択します。
  3. 該当する列(部署コード列)のヘッダー左に表示されているデータ型アイコンを確認します。数値型なら「123」、テキスト型なら「ABC」のアイコンです。
  4. 列ヘッダーをクリックして列全体を選択します。「ホーム」タブの「データ型」グループにあるドロップダウンをクリックし、「テキスト」を選択します。
  5. または、列ヘッダーのデータ型アイコンを直接クリックして、表示されるメニューから「テキスト」を選ぶこともできます。
  6. 変更後、Power Queryエディタの右上「閉じて読み込む」をクリックしてExcelに反映します。

この手順で先頭ゼロが保持されます。注意点として、データ型の変更は「変更された型」という適用ステップとして記録されます。元のソースデータは変更されません。

状況別の型指定方法:比較表で確認

ソースの種類 初期の自動型 型指定の場所 結果
CSVファイル 数値型 Power Queryエディタの列データ型 先頭ゼロ保持
Excelテーブル(.xlsx) 数値型(元のセルが数値の場合) Power Queryエディタの列データ型 先頭ゼロ保持(ただし元データが数値の場合は「0012」として読み込まれない)
データベース(SQL Server等) ソースの型に依存(通常テキストならテキスト型) 必要に応じてPower Queryで変更 ソース型に従う

CSVやExcelテーブルから取り込む場合、元のデータが「0012」のようにテキストとして保存されていても、Power Queryが数値と誤認してゼロを削除することがあります。一方、データベースでは列のデータ型がテキスト(varchar等)であればそのままテキストとして読み込まれます。しかし、数値型の列から取り込む場合は同様の問題が発生します。

ADVERTISEMENT

失敗パターンとその対策

失敗パターン1:データ型を後から変更してもゼロが戻らない

すでに数値として読み込まれた後に列のデータ型をテキストに変更しても、失われた先頭ゼロは戻りません。これはPower Queryが元データから数値「12」として取り込んでしまったためです。対策としては、クエリ設定の「ソース」ステップの前にデータ型を指定する必要があります。具体的には、Power Queryエディタの「適用したステップ」で「ソース」の後に「変更された型」ステップを追加するのではなく、ソースステップを編集して型を事前に指定します。

失敗パターン2:元データ自体が数値形式で保存されている

参照元のExcelファイルやCSVファイルで、部署コード列がすでに数値として保存されている場合(セルの書式が「数値」、先頭ゼロが表示されない状態)、Power Queryで型指定をテキストに変更しても「12」として読み込まれます。この場合は、元データをテキスト形式に修正する必要があります。元データが共有フォルダにある場合は、管理者に依頼してデータの形式を変更してもらうか、自分で権限があればセルの書式を「文字列」に変更し、先頭ゼロを含む値に修正します。

失敗パターン3:複数の列をまとめて変更して型が統一されない

複数のコード列がある場合、一度に全列を選択してデータ型をテキストに変更すると、日付や数値列までテキストになり後続の計算で支障が出ることがあります。対策としては、列ごとに個別にデータ型を指定するか、Power Queryの「列の追加」タブで「カスタム列」を使いテキスト関数で変換する方法もあります。

管理者へ確認する情報:組織全体でのコード管理ルール

先頭ゼロの問題は個人の設定だけでは解決できない場合があります。特に、社内で利用するマスタデータの形式が統一されていないと、同じクエリを他のユーザーが使うときに再現性が失われます。管理者には以下の点を確認・依頼しましょう。

  • 部署コードなどコード列をテキスト型(文字列)で統一して管理するルールを策定してもらう。
  • 共有のCSVやExcelファイルの出力時に、コード列を先頭ゼロ付きテキストとして出力する設定を依頼する。
  • データベースのテーブル設計で、コード列のデータ型をvarcharなど文字列型にしておく。
  • Power Queryのクエリを組織で共有する場合、型指定のステップを含めたテンプレートを配布する。

よくある質問(FAQ)

Q1. Power Queryのデータ型をテキストに変更しても先頭ゼロが消えたままです。なぜですか?

最も多い原因は、元データがすでに数値として保存されていることです。Power Queryは元データをそのまま読み込むため、元の値が「12」であればテキスト型に変更しても「12」のままです。元データを確認し、セルの書式が文字列で先頭ゼロが入力されていることを確認してください。

Q2. すでに取り込んでしまったデータの先頭ゼロを後から復元できますか?

直接の復元はできません。ただし、元データにアクセスできる場合は、クエリを編集して再度取り込み直すことで解決します。Power Queryのクエリ設定で「ソース」ステップを削除して再作成するか、元データを修正後に「更新」を実行します。

Q3. 毎回手動で型指定するのが面倒です。自動でテキスト型として認識させる方法はありますか?

Power Queryの「データ型の検出」設定を変更することで、自動認識の基準を変えられます。Power Queryエディタの「ホーム」タブ→「データ型の検出」で「各列の最初の200行に基づいて」などのオプションが選べますが、完全にテキストとして固定することはできません。確実な方法は、列のデータ型を明示的にテキストに指定することです。

まとめ

Power Queryで部署コードの先頭ゼロが消える原因は、自動型変換による数値型への誤認識です。解決策はPower Queryエディタで該当列のデータ型を「テキスト」に変更することですが、元データの形式にも注意が必要です。失敗を防ぐには、データ取り込み前に型指定を行うこと、そして組織全体でコードデータをテキストとして管理するルールを整備することが重要です。定期的に同じクエリを使う場合は、型指定の手順をテンプレート化して共有することで、再発を防止できます。


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

ADVERTISEMENT

この記事の監修者
📈

超解決 Excel・Word研究班

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

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

ADVERTISEMENT