ExcelでCSVの先頭ゼロが消える? セル表示・保存した中身・再読込を比較

スポンサーリンク

CSVに書かれた 00123 が、Excelで開くと 123 になることがあります。

このときは、セルの表示、数式バー、保存したCSVの中身、再び開いた結果を分けて確認すると、どの段階で変わったのかが分かります。

今回の検証では、表示形式でゼロを付けた場合も、文字列として取り込んだ場合も、保存したCSVには 00123 が残っていました。しかし、そのCSVをダブルクリックで開き直すと、どちらも 123 になりました。

検証に使ったデータと環境

2026年10月10日に、Dr.NAOがWindows PCで検証しました。ExcelはExcel 2024 MSO、バージョン2609、ビルド16.0.20430.20032、64ビットです。

元のCSVはUTF-8・BOMありで、次の内容です。

record,code
A01,00123
A02,00007
A03,01234

確認するセルは、見出しの code ではなく、A01の行のコードです。取り込み方によって見出し行が増えることがあるため、セル番地だけで判断しないようにしました。

表示形式と文字列取り込みの比較結果

確認段階 数値に表示形式 00000 を設定 データ型検出をオフにして取り込み
保存前のセル表示 00123 00123
保存前の数式バー 123 00123
保存したCSVのA01行 A01,00123 A01,00123
保存後の見出し 元の record,code その前に Column1,Column2 が追加
ダブルクリックで再び開いたセル表示 123 123
再び開いたセルの数式バー 123 123

セル表示と数式バーの比較はA01のコードについて行いました。保存後のCSV原文では、3件すべてのコードを確認しています。

保存形式は、どちらも[CSV UTF-8(コンマ区切り)]です。

表示形式で00123と見せても、数式バーは123だった

元のCSVをダブルクリックで開くと、A01のコードはセル表示・数式バーともに 123 でした。

コードのセルを選び、Ctrl+1からユーザー定義の表示形式を 00000 にすると、セルには 00123 と表示されました。一方、数式バーは 123 のままでした。

Microsoftも、ユーザー定義の表示形式と、データをテキストとして取り込む方法を分けて案内しています。【出典M3】

00000 は5桁にそろえるための指定です。元の桁数が不明なコードを復元する方法ではありません。

CSVに保存すると、原文にはゼロが残っていた

表示形式を設定したシートを別名でCSVに保存し、メモ帳で確認した内容は次のとおりです。

record,code
A01,00123
A02,00007
A03,01234

この検証では、保存時に先頭ゼロが消えたわけではありません。

MicrosoftのCSV形式の説明では、セルに表示されるテキストや値が保存され、書式情報は保持されないとされています。今回の保存結果も、文字としての 00123 と、Excelの表示形式の設定を分けて考える必要があります。【出典M4】

保存したCSVを閉じ、ダブルクリックで開き直すと、A01のコードは再びセル表示・数式バーともに 123 になりました。

データ型検出をオフにすると、取り込み時のゼロを保持できた

同じ元ファイルを使い、次の手順で取り込みました。

  1. Excelで空白のブックを開きます。
  2. [データ]→[テキストまたはCSVから]で元のCSVを選びます。
  3. [データ型検出]を確認します。今回の初期選択は[最初の200行に基づく]でした。
  4. [データ型を検出しない]を選びます。
  5. プレビューのコードが 00123 であることを確認して読み込みます。
  6. A01のコードを選び、セル表示と数式バーを確認します。

この方法では、両方が 00123 でした。

MicrosoftのText/CSVコネクタ資料では、自動データ型検出をオフにすると、すべての列が既定でテキストになると説明されています。コード列だけに作用する設定ではありません。【出典M2】

CSVへ保存する前に、追加された見出しを確認する

今回の取り込み結果には Column1,Column2 という見出しが加わり、そのままCSVへ保存すると、元の record,code の前に1行追加されました。

次の保存手順は、検証時の出力を確認するためのものです。別システムへ提出するCSVを、元と同じ行構成で作る手順としては扱わないでください。見出しを整理して再出力する操作は、今回検証していません。

保存と確認は、次の順に行いました。

  1. 取り込んだシートを、元ファイルとは別の名前で保存します。
  2. ファイル形式に[CSV UTF-8(コンマ区切り)]を選びます。
  3. 保存したCSVをメモ帳で開き、先頭行とコードを確認します。

実際の保存内容は次のとおりでした。

Column1,Column2
record,code
A01,00123
A02,00007
A03,01234

3件のコードには先頭ゼロが残っていますが、元ファイルとは見出しの構成が異なります。「ゼロが残った」だけで、提出用CSVとして問題ないとは判断できません。

また、この見出し追加を、すべての取り込み条件で必ず起きる動作とは断定していません。

文字列として保存しても、ダブルクリックでの再読込は別

文字列として取り込んだシートから保存したCSVも、ダブルクリックで開き直すと、A01のコードは 123 になりました。

つまり、今回の環境では、CSV原文に 00123 が残っていることと、Excelで再び開いたときに 00123 と表示されることは別でした。

先頭ゼロが必要なコードを扱うときは、次の順で確認できます。

  1. 元のCSVをテキストとして確認する。
  2. Excelへの取り込み時に、コードの扱いを確認する。
  3. CSVへ保存したら、原文のコードと見出しを確認する。
  4. 再びExcelで読む場合も、取り込み条件を確認する。

今回、保存後CSVを再び文字列として取り込む操作までは検証していません。

今回の結果を適用できる範囲

この記事は、記載したExcel環境とサンプルでの結果です。

Excelには自動データ変換に関する設定もありますが、今回その設定値は確認・変更していません。すべてのExcel環境で、ダブルクリックすると必ず先頭ゼロが消えるという意味ではありません。【出典M3】

業務システムへの投入、見出しの整理後の再出力、他のExcel環境での動作は未検証です。

出典

コメント

タイトルとURLをコピーしました