ADVERTISEMENT

【Excel】Power Queryで勤務表CSVの文字コードが混在する時の対処法

【Excel】Power Queryで勤務表CSVの文字コードが混在する時の対処法
🛡️ 超解決

勤務表CSVファイルをExcelのPower Queryで読み込む際に、文字化けが発生して困った経験はありませんか。特に、UTF-8とShift_JISが混在したCSVファイルを扱う場合、Power Queryの自動検出では正しく認識されず、データが崩れてしまうことがあります。この問題は、複数のシステムや担当者から届くCSVファイルを統合するときに頻繁に起きます。本記事では、文字コードが混在する勤務表CSVをPower Queryで正しく読み込むための具体的な対処法を、原因の切り分けから実践手順まで詳しく解説します。

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

  • 最初に見る場所: Power Queryエディタの「ソース」ステップでエンコード設定を確認する
  • 切り分けの軸: 文字化けが発生するCSVファイルの文字コードを特定し、Power Queryのエンコード指定で再現性を確認する
  • 注意点: 会社PCでシステムに変更を加える場合は管理者の許可を得てください。また、元のCSVファイルを編集せずにPower Query側で対処することを推奨します

ADVERTISEMENT

文字コード混在が発生する原因

勤務表CSVファイルの文字コードが混在する背景には、主に2つの要因があります。1つ目は、異なるシステムから出力されたCSVファイルを1つのフォルダに集約しているケースです。例えば、基幹システムからはShift_JIS(日本語Windows標準)、外部クラウドサービスからはUTF-8(BOMあり/なし)で出力されることがあります。2つ目は、手作業でCSVを編集した際に、テキストエディタの保存設定が統一されていない場合です。これらの結果、同じフォルダ内のCSVファイルであっても、各行や各ファイルで文字コードが異なる状態になります。

Power Queryは、フォルダから複数のCSVファイルを読み込む際に、各ファイルの文字コードを自動検出しようとします。しかし、自動検出は先頭の数バイトやファイル全体のバイトパターンから推測するため、混在していると誤判定が起こりやすいです。特にUTF-8とShift_JISは、一部の文字(例えば「能」「漢」など)でバイト列が重なるため、誤認識されやすいです。

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

使用中の文字コードを確認する方法

Power Queryで対処する前に、まず自分が扱っているCSVファイルの文字コードを確認してください。以下に、一般的な確認手順を記載します。

メモ帳やテキストエディタで開く

Windowsのメモ帳でCSVファイルを開くと、文字化けしていなければそのまま表示されますが、文字コードがわからない場合は「名前を付けて保存」ダイアログのエンコード欄で現在のエンコードを確認できます。ただし、メモ帳は文字コードの自動判別に失敗することがあるため、不安な場合はフリーのテキストエディタ(例:サクラエディタ、VS Code)を使うと確実です。

Power Queryのプレビューで確認する

Power Queryの「データの取得」でCSVファイルを選択した際、プレビュー画面の右下にエンコード情報が表示されます。ここで「65001: Unicode (UTF-8)」や「932: Japanese (Shift_JIS)」などと表示されれば、そのファイルの文字コードがわかります。ただし、複数ファイルを結合する場合は、フォルダ全体を読み込んだ後に「変換」タブの「エンコードの検出」を使って各ファイルのエンコードを列として抽出することも可能です。

Power Queryで文字コードを指定して読み込む手順

文字コード混在に対処する最も確実な方法は、Power Queryで各ファイルの読み込み時に明示的にエンコードを指定することです。以下の手順では、フォルダから全CSVを読み込み、それぞれに適切なエンコードを適用する方法を説明します。

  1. Excelの「データ」タブから「データの取得」→「ファイルから」→「フォルダーから」をクリックします。
  2. 対象のフォルダを選択し、「データの変換」をクリックしてPower Queryエディターを起動します。
  3. 表示されたクエリで「Combine Files」という名前のクエリが生成されていることを確認し、そのステップを展開します。
  4. 左側の「クエリ」ペインで「Sample File」のようなクエリを選択し、ホームタブの「ソース」ステップの歯車アイコンをクリックします。
  5. 表示されたダイアログで「ファイルの元の設定」の「エンコード」ドロップダウンから適切なコードページを選択します。例えばUTF-8の場合は「65001: Unicode (UTF-8)」、Shift_JISの場合は「932: Japanese (Shift_JIS)」を選びます。
  6. 「OK」をクリックし、そのクエリを閉じてから「Combine Files」クエリに戻り、「ホーム」タブの「閉じて読み込む」を選択します。

この手順では、すべてのファイルに同じエンコードが適用されるため、もしファイルごとに文字コードが異なる場合は、追加の対処が必要です。その場合、以下の「状況別の対処法比較表」を参考にしてください。

ADVERTISEMENT

状況別の対処法比較表

状況 推奨対処法 注意点
全ファイルがUTF-8 Power Queryのエンコード指定で「65001: Unicode (UTF-8)」を選択 BOMの有無は自動認識されるため特に気にする必要はありません
全ファイルがShift_JIS エンコード指定で「932: Japanese (Shift_JIS)」を選択 ExcelのデフォルトはShift_JISなので、元の設定を変えなくても問題ない場合があります
UTF-8とShift_JISが混在 M言語を使ってファイルごとにエンコードを判定して変換する または、あらかじめすべてのCSVを1つの文字コードに統一してから読み込む
UTF-8(BOMあり)とUTF-8(BOMなし)が混在 Power Queryの自動検出に任せるか、常にUTF-8を指定する BOMの有無で文字化けが発生することは稀ですが、稀に先頭にゴミが付くことがあります

よくある失敗パターンとその対策

失敗パターン1: 自動検出に頼りすぎる

Power Queryの自動検出は便利ですが、文字コード混在時にはファイルごとに異なる結果になることがあります。例えば、先頭のファイルがShift_JISで後続がUTF-8の場合、最初のファイルのエンコードが全体に適用されて文字化けします。対策として、上記の手順で明示的にエンコードを指定するか、M言語でファイルごとに処理を分岐させてください。

失敗パターン2: 元のCSVファイルを直接編集してしまう

「文字化けするから」と手動でCSVを開いて保存し直すと、かえって文字コードが変わってしまうことがあります。また、元データを変更すると、後で元の状態に戻せなくなるリスクもあります。Power Query側で変換するのが安全です。

失敗パターン3: BOMの有無を見落とす

UTF-8にはBOM(Byte Order Mark)付きとBOMなしの2種類があり、Power QueryはBOMの有無を自動で認識しますが、稀にBOMが原因で先頭列に余分なデータが含まれることがあります。その場合、Power Queryの「変換」タブにある「先頭の行を削除」や「置換」を使って除去できます。

管理者に確認すべき設定項目

社内で共有されている勤務表CSVの文字コード問題を根本的に解決するには、システム管理者やデータ作成元の担当者と以下の項目を確認してください。

  • CSV出力システムの文字コード設定: 基幹システムやクラウドサービスがどの文字コードでCSVを出力しているか確認します。可能であればUTF-8に統一するとトラブルが減ります。
  • ファイル保存時のルール: 手作業でCSVを編集する際に、テキストエディタのエンコード設定を統一するよう周知します。
  • Power Queryの自動更新設定: フォルダからデータを自動更新する場合は、文字コード指定をクエリ内に固定しておかないと、新しく追加されたファイルで問題が起きる可能性があります。管理者に依頼してクエリを調整してください。

よくある質問

Q1: Power Queryで文字コードを指定しても文字化けが直りません

指定したエンコードが間違っている可能性があります。一度メモ帳などのテキストエディタでファイルを開き、正しい文字コードを確認してください。また、ファイルがUTF-8でありながらShift_JISの文字を含むなど、一部の文字だけ異なるコードになっている場合もあります。その場合は、Power Queryの「置換」や「カスタム関数」を使って個別に変換します。

Q2: フォルダ内のCSVファイルをすべて同じ文字コードに変換したいです

Power Queryで読み込む前に、手動で変換することも可能ですが、ファイル数が多い場合はPowerShellやバッチファイルを使って一括変換する方法が効率的です。ただし、会社PCでスクリプトを実行する場合は管理者の許可を得てください。

Q3: Power QueryのM言語を使った対処法を教えてください

M言語を使えば、ファイルごとにバイトパターンを解析して適切なエンコードを選択できます。具体的には、Binary.BufferとText.FromBinary関数を組み合わせて、先頭数バイトからUTF-8かShift_JISかを判別します。ただし、この方法は高度なため、通常は上記の手順で十分です。どうしても必要な場合は専門書や公式ドキュメントを参照してください。

まとめ

勤務表CSVの文字コード混在問題は、Power Queryで明示的にエンコードを指定することで大部分が解決します。ただし、ファイルごとにコードが異なる場合は、事前に統一するか、M言語による動的な変換が必要になります。まずは自分が扱っているCSVの文字コードを正しく把握し、Power Queryの設定を適切に行ってください。また、根本的な解決には、システム管理者と連携して出力元の文字コードを統一することが効果的です。これらの対処法を実践すれば、文字化けに悩まされることなく、スムーズに勤務表データを活用できるようになります。


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

ADVERTISEMENT

この記事の監修者
📈

超解決 Excel・Word研究班

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

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

ADVERTISEMENT