ExcelでCSVが文字化けするときの直し方|UTF-8・Shift_JISの選び方と取り込み手順
取引先から受け取ったCSVファイルをダブルクリックしたら、会社名が見たことのない漢字や記号になってしまった。担当者に「CSVが壊れている」と連絡する前に、Excelへの読み込み方を確認してみてください。
CSVの中身が正常でも、保存された文字コードとExcelが読み取ろうとする文字コードが一致しなければ、日本語は文字化けします。 ただし、文字化けが直っても取引先コードの先頭ゼロが消えることがあるので、実務では両方を確認する必要があります。
先に結論:ダブルクリックではなく、取り込み時に確認する
多くの場合、次の順で試すのが安全です。
- 元のCSVを複製し、受領ファイルを上書きしない。
- Excelを起動し、空のブックを開く。
- [データ]→[テキストまたはCSVから]でCSVを選ぶ。
- プレビューで文字コード(ファイルの元の形式)を選び、日本語が正しく表示されるか確認する。
- コード列がある場合は[データの変換]で列を「テキスト」に設定し、先頭ゼロなどの自動変換を防ぐ。
- 読み込み後、件数・列数・コードの例・金額を元データと照合する。
Windows版Excel(Microsoft 365/Excel 2024など)の例です。旧バージョンでは「従来のテキストインポートウィザード」など、項目名や画面が異なる場合があります。
図:文字コードの解釈と列の型は別問題です。図は取り込みの概念図で、Excelの実画面ではありません。
なぜCSVだけ文字化けするのか
.xlsx はセルの内容や形式を管理するExcelのブックですが、CSVは基本的に「文字を区切り記号で並べたテキストファイル」です。CSVファイルには、どの文字コードで作られたかを必ず明示する仕組みがあるわけではありません。
日本語の業務CSVでよく見るのは次の2系統です。
| 文字コード | 主な場面 | 読み込み時の確認 |
|---|---|---|
| UTF-8 | Webサービス、比較的新しいシステムの出力 | Excelの取り込みプレビューでUTF-8を選ぶ |
| Shift_JIS系(Windows-932など) | 古い業務システムや日本語Windows向けの出力 | 日本語のShift_JIS系を選ぶ |
UTF-8で作られたものをShift_JIS系として読む、またはその逆をすると、文字化けの原因になります。UTF-8のファイルには先頭にBOMと呼ばれる目印が付く場合もあり、Excelでの判定に関係することがあります。
重要:UTF-8の方が常に正しい、Shift_JISが必ず間違い、という意味ではありません。 受け取ったファイルが実際にどの形式で保存されているかが基準です。
ExcelでCSVを正しく取り込む具体的な手順
ここでは架空のCSVを使います。
取引先コード,取引先名,売上金額
00123,株式会社さくら,12000
00456,有限会社みどり,8500
欲しいのは「取引先名が日本語で読める」だけでなく、00123と00456というコードがそのまま残る表です。
手順1:プレビューで日本語と区切りを確認する
- CSVを開いたExcel画面で修正し続けるのではなく、いったん閉じて空のブックを開きます。元CSVは別名でコピーしておきます。
- [データ]→[テキストまたはCSVから]を選びます。
- ファイルを選択し、プレビューの[元のファイル](文字コードに相当する項目)を変更してみます。
- 「株式会社さくら」のような日本語が正常になり、列が3列に分かれる設定を探します。区切り記号がカンマであることも確認してください。
文字化けしたまま「読み込み」を押して保存し直すと、後から元の文字を復元しにくくなります。まずプレビューで正しく解釈できることを確認しましょう。
手順2:取引先コードをテキスト列として扱う
プレビューで正しく見えても、読み込みの自動型判定によって 00123 が 123 になる場合があります。これは文字化けとは別の問題です。
- 読み込み画面から[データの変換]を選び、Power Queryの編集画面を開きます。
- 「取引先コード」列の型を「テキスト」に設定します。
- 自動生成された「変更された型」などのステップで、先に数値に変わっていないか確認します。必要ならその自動変換ステップを修正・削除して、元の
00123が見える状態に戻します。 - 「売上金額」は数値型でよいかを確認し、[閉じて読み込む]で表を取り込みます。
先頭ゼロが必要な列には、口座番号、郵便番号、管理番号、商品コードなどもあります。長い数字列はExcelの数値精度で元の桁を保持できないこともあるため、計算しない識別子はテキストで取り込むことを基本にします。
日本語は直ったのに、表の内容が変わってしまった場合
読み込み後は、次のチェックを行ってください。
| 確認項目 | よく起きる問題 | どう確認するか |
|---|---|---|
| コード | 00123 が 123 になる |
桁数と先頭ゼロを元CSVと比較 |
| 日付 | 1-2 が日付に解釈される |
元値と読み込み後の表示・データ型を比較 |
| 長い数値 | 大きな管理番号の下位桁が変わる | 識別子はテキストとして読み直す |
| 金額 | カンマや小数点が期待と異なる | 文字列か数値か、合計値も確認 |
| 列 | カンマ区切りが1列に入る | 区切り記号と引用符の扱いを確認 |
特に取引先コードと売上金額を組み合わせて集計する人は、コードが変化すると別の取引先として扱ったり、マスタ照合に失敗したりします。見た目の日本語だけで「取り込み成功」と判断しない方が安全です。
文字コードを変更しても直らないとき
次の可能性を切り分けます。
- 元CSV自体に「???」などが保存されている:作成元ですでに文字が失われている可能性があります。元システムから再出力してもらう方が確実です。
- CSVではなく別形式のファイル:拡張子が
.csvでも内容が想定と異なるケースがあります。送信元の仕様を確認します。 - 日本語は正常だが列分割がおかしい:区切り記号や引用符の解釈の問題です。文字コードだけ変えても解決しません。
- 途中で開いて上書き保存した:変換後のCSVには元の情報が残っていない場合があります。受領時の原本や再送ファイルを使います。
送信元に確認するなら「CSVの文字コードはUTF-8でしょうか、それともShift_JIS系でしょうか」「コード列は先頭ゼロを含みますか」と具体的に聞くと、やり取りが短くなります。
よくある質問
Q. UTF-8で保存し直せば必ず直りますか
いいえ。文字化けした状態で保存し直すと、誤った文字列をUTF-8として保存するだけになることがあります。正しい文字として読み取れる元ファイルから操作してください。
Q. CSVを毎月取り込むなら毎回この操作が必要ですか
同じ形式なら、取り込み手順をPower Queryのクエリとして保存し、次回更新に使う方法があります。ただし送信元の仕様変更や新たなコード形式には注意が必要です。
Q. Excelで開いたら文字化けするCSVは不良品ですか
そうとは限りません。適切な文字コードで読み込めば正常に表示できるCSVも多くあります。元ファイルが壊れているかどうかと、読み込み方法の不一致は分けて判断します。
まとめ
ExcelのCSV文字化けは、原本を残す→[テキストまたはCSVから]で取り込む→文字コードを合わせる→コード列の型を確認する、という順番で対処します。
「日本語が見えること」と「業務データが正しいこと」は別の確認です。後者まで確かめれば、翌月の集計や取引先マスタ照合で困ることを減らせます。
