Excel で CSV ファイルを安全に開く:日付・先頭ゼロ・文字化けを守る方法
CSV を開いたときに Excel が先頭ゼロを消したり、日付を壊したり、UTF-8 を文字化けさせたりするのを防ぎましょう。データを守るインポート手順と、壊れた取り込みを AI で修復する方法を解説します。
CSV ファイルのダブルクリックは、Excel で最も危険なありふれた操作です。一見うまくいきます——ファイルは開き、データは表示されます。しかしその時点で、3 種類の損傷がすでに起きているかもしれません。
- 先頭ゼロが消えている。 郵便番号
02138が2138に、製品コード000451が451になっています。 - 日付に見えるものが日付に変換されている。 遺伝子名
MARCH1、分数1/2、コード3-14——すべて静かに変換されています。 - 非 ASCII 文字が化けている。 ファイルが UTF-8 だったのに Excel がレガシーエンコーディングと推測したせいで、
MüllerがMüllerになっています。
どれもエラーは表示されません。気づくのは検索が失敗したときや、顧客へのメールが不達になったときです。こうした事故を二度と起こさないインポート方法を紹介します。
安全な方法:「開く」ではなく「インポートする」
ダブルクリックの代わりに、データ → データの取得 → テキストまたは CSV から(Power Query)を使います。
- Excel が検出した元のファイル(エンコーディング)付きのプレビューを表示します。文字化けが見えたら 65001: Unicode (UTF-8) に切り替えます。
- 列の型を制御したい場合はデータの変換をクリック、そのまま読み込むなら**読み込み先…**を使います。
- Power Query エディターで各列の型を明示的に設定します。コード類の列(郵便番号、SKU、電話番号)は数値ではなくテキストにします。
レガシーのテキストファイルウィザード(ファイル → オプション → データ → レガシデータインポートウィザードの表示 で今も使えます)でも同じことができます。「区切り記号付き」を選び、区切り文字を指定し、列の書式を設定します。先頭ゼロがあるものはすべて文字列にしてください。
すでに壊れた CSV を修復する
ファイルがすでに「開いて保存」され、損傷が焼き付いてしまっている場合の対処です。
先頭ゼロは、正しい桁数がわかっていれば復元できます。
=TEXT(A2, "00000")
これで 5 桁の郵便番号が復元されます。桁数が一定でないコードには数式による修復手段はありません。元ファイルから再インポートしてください。
数値になってしまった日付(日付の代わりに 45678 が見える場合):日付の表示形式を適用します。内部のシリアル値はたいてい無事です。
日付になってしまった文字列(MARCH1 が 1-Mar と表示される場合):元の文字列はセルからは復元できません。その列をテキスト型に指定して再インポートしてください。
文字化け(ü や â€" の並び):UTF-8 を選んで再インポートします。数文字なら検索と置換で直せることもありますが、大規模には信頼できません。
区切り文字の落とし穴
ヨーロッパの多くのロケールではリスト区切り文字が ; のため、カンマ区切りのファイルが巨大な 1 列として開かれます(逆のパターンもあります)。Power Query ならプレビューダイアログで区切り文字を明示的に指定できます。一回限りの修正なら、データ → 区切り位置 で 1 列になった取り込みを再分割できます。
もう 1 つの定番は引用符付きフィールドです。カンマを含む説明文は元データ側で引用符に包まれている必要があり、エクスポート側の引用処理が不適切だと、該当行だけ列がずれます。ずれた行は、型が一定であるはずの列を確認すれば簡単に見つかります。たとえば =ISNUMBER(E2) がファイルの途中から突然 FALSE を返し始める、といった具合です。
AI アシスタントの出番
取り込みに失敗した後に残るのは、たいてい複合的に壊れたシートです。一部の数値は文字列、日付は 2 つの形式が混在、行のブロックが 1 つずれている。列ごとに直すより、修正内容を言葉で伝えるほうが速いのです。AI for Excel をサイドバーに開いて、こう伝えます。
「A 列は文字列として保存された 5 桁の郵便番号のはず。欠けた先頭ゼロを復元して。D 列は日付のはず。文字列の日付を YYYY-MM-DD の本物の日付に変換して。列がずれて見える行にはフラグを付けて。」
アドインは範囲を読み取り、変換を適用します。そして書き込み内容を検証し、変更前にバックアップを取るため、サマリーを確認して、修正が期待と違えばロールバックできます。より広いクリーニングのワークフローは8 ステップのデータクリーニングチェックリストをご覧ください。
よくある質問
なぜ Excel は CSV ファイルの先頭ゼロを消すのですか?
CSV を直接開くと、Excel が各列の型を推測します。数字だけの文字列は数値として扱われ、数値に先頭ゼロは存在しません。データの取得(またはレガシーウィザード)経由でインポートし、該当列をテキストに設定すれば保持されます。
UTF-8 の CSV を Excel で正しく開くには?
データ → データの取得 → テキストまたは CSV から を使い、プレビューで元のファイルを 65001: Unicode (UTF-8) に設定します。出力元のシステムで「CSV UTF-8」(BOM 付き)として保存しておくと、ダブルクリック時にも Excel が検出しやすくなります。
Excel が値を勝手に日付に変換するのを止められますか?
はい。該当列をテキスト型に指定してインポートしてください。Excel 365 では、ファイル → オプション → データ → 自動データ変換 から、読み込み時の日付への自動変換を無効にすることもできます。