CSV処理

Excel で CSV ファイルを安全に開く:日付・先頭ゼロ・文字化けを守る方法

CSV を開いたときに Excel が先頭ゼロを消したり、日付を壊したり、UTF-8 を文字化けさせたりするのを防ぎましょう。データを守るインポート手順と、壊れた取り込みを AI で修復する方法を解説します。

CSV ファイルのダブルクリックは、Excel で最も危険なありふれた操作です。一見うまくいきます——ファイルは開き、データは表示されます。しかしその時点で、3 種類の損傷がすでに起きているかもしれません。

  • 先頭ゼロが消えている。 郵便番号 021382138 に、製品コード 000451451 になっています。
  • 日付に見えるものが日付に変換されている。 遺伝子名 MARCH1、分数 1/2、コード 3-14——すべて静かに変換されています。
  • 非 ASCII 文字が化けている。 ファイルが UTF-8 だったのに Excel がレガシーエンコーディングと推測したせいで、MüllerMüller になっています。

どれもエラーは表示されません。気づくのは検索が失敗したときや、顧客へのメールが不達になったときです。こうした事故を二度と起こさないインポート方法を紹介します。

安全な方法:「開く」ではなく「インポートする」

ダブルクリックの代わりに、データ → データの取得 → テキストまたは CSV から(Power Query)を使います。

  1. Excel が検出した元のファイル(エンコーディング)付きのプレビューを表示します。文字化けが見えたら 65001: Unicode (UTF-8) に切り替えます。
  2. 列の型を制御したい場合はデータの変換をクリック、そのまま読み込むなら**読み込み先…**を使います。
  3. Power Query エディターで各列の型を明示的に設定します。コード類の列(郵便番号、SKU、電話番号)は数値ではなくテキストにします。

レガシーのテキストファイルウィザード(ファイル → オプション → データ → レガシデータインポートウィザードの表示 で今も使えます)でも同じことができます。「区切り記号付き」を選び、区切り文字を指定し、列の書式を設定します。先頭ゼロがあるものはすべて文字列にしてください。

すでに壊れた CSV を修復する

ファイルがすでに「開いて保存」され、損傷が焼き付いてしまっている場合の対処です。

先頭ゼロは、正しい桁数がわかっていれば復元できます。

=TEXT(A2, "00000")

これで 5 桁の郵便番号が復元されます。桁数が一定でないコードには数式による修復手段はありません。元ファイルから再インポートしてください。

数値になってしまった日付(日付の代わりに 45678 が見える場合):日付の表示形式を適用します。内部のシリアル値はたいてい無事です。

日付になってしまった文字列(MARCH11-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 では、ファイル → オプション → データ → 自動データ変換 から、読み込み時の日付への自動変換を無効にすることもできます。