CSVを開くと先頭の0が消える・数字が日付になる問題の防ぎ方
AIを使いこなす執筆にClaudeを使用しています。

結論から言うと、CSVをダブルクリックで開くのをやめ、Excelの「データ」タブから取り込みます。その取り込み画面で、郵便番号や電話番号の列を文字列として扱わせるのが対策です。開いた後で列の書式をテキストにしても、すでに消えた先頭の0は一般に戻りません。変換は「開いた時点」で起きるので、止める操作もそこで行います。 この記事では、次の3つを扱います。 • 取り込み時に変換を止める2つの手順 • 被害が出ていないか確かめるチェック表 • AIに任せてよい作業と、人が見る作業の分け方
なぜ「開いた時点」で起きるのか
CSVは文字が並んだだけのファイルです。「0312345678」も「1-2」も、ファイルの中では区別がありません。Excelが直接開くと、列ごとの形式を既定のデータ形式の設定で解釈します。Microsoftの案内にも、この方法では数値列の先頭の0が保てない場合があると書かれています(Import or export text (.txt or .csv) files|Microsoft)。
日付への変換については、セルへ入力する場面の対処が案内されています。先にセルをテキスト書式にする、数字の前にアポストロフィ(')を付ける、という方法です。同じページには「この動作をオフにする方法はない」という趣旨の記載もあります(Stop automatically changing numbers to dates|Microsoft。対象はMicrosoft 365、2024、2021、2019、2016のExcelです)。
CSVを直接開くときに変換を止める設定は、今回確認した公式資料には載っていませんでした。そのため、取り込みの入口を変える方法が現実的です。以下はWindows版のデスクトップExcelを想定しています。MacやWeb版は画面が違う可能性があり、確認していません。
手順A:「テキストまたはCSVから」で型の自動判定を切る
通常はこちらがおすすめです。
- 空のブックを開き、「データ」タブの「データの取得 & 変換」グループで「テキストまたは CSV から」を選びます。
- CSVファイルを選んで「インポート」を押すと、プレビュー画面が出ます。
- 区切り文字が「カンマ」になっていることを確認します。
- データ型の検出を選ぶ欄で、検出をしない選択肢(英語表記は Do not detect data types)を選びます。選択肢は「先頭200行に基づく」「データセット全体に基づく」「検出しない」の3つで、検出しない場合は全列が「テキスト」になります(Power Query Text/CSV connector|Microsoft Learn)。日本語画面の項目名は版によって違う場合があります。
- 日本語が文字化けしていたら「ファイルの元の形式」を変えます。文字コードは自動判定されず、UTF-8が推測されるのはファイルの先頭にBOMがある場合だけです(同ページ)。
- 「読み込み」でシートに出します。金額や数量のように計算に使う列は、読み込み後に数値へ直します。
「データセット全体」を選べば正確になりそうですが、同ページは「推測は間違うことがある」と注意しています。先頭の0を守りたい列があるなら、判定そのものを切るほうが確実です。念のため、読み込み後に「変換データ」画面の適用したステップを見て、型の変更が残っていないかも確認してください。
手順B:従来のウィザードで列ごとに指定する
列ごとに「ここは文字列、ここは日付」と選びたいときは、従来のインポートウィザードが向いています。Microsoftの該当ページが対象とするのは、Microsoft 365、2024、2021のExcelです。2019や2016では、この画面がないか名称が違う可能性があります。
- 「ファイル」→「オプション」→「データ」を開きます。
- 「レガシデータのインポートウィザードを表示」の中の「テキストから(レガシ)」にチェックを入れます。
- 「データ」タブの「データの取得」→「レガシ ウィザード」→「テキストから(レガシ)」でCSVを選びます。
(Text Import Wizard|Microsoft)
ウィザードの手順3で、プレビューの列見出しをクリックして形式を選びます。選択肢は「全般」「テキスト」「日付」「列をインポートしない」などです。「全般」は、変換すると意図しない結果になりそうな列を変換せずに取り込む仕組みです。郵便番号・電話番号・社員番号・商品コードのような列は、この自動判断に任せず「テキスト」を明示してください。
もう一つの方法は、CSVのコピーの拡張子を .txt に変えてから開くことです。同じウィザードが起動します。元のファイルを壊さないよう、必ずコピーで行ってください。
変換被害の見分けチェック表
取り込んだ後や、すでに開いてしまったファイルは、次の表で点検します。確認式は一般的な関数を使った説明用の例で、実際の画面では動かしていません。ご自分のブックで試してから使ってください。郵便番号はA列(ハイフンなしの7桁)、電話番号はB列で、2行目から始まる想定です。
- 郵便番号が6桁以下、起きていること:先頭の0が落ちた(0で始まる番号、北海道など)、見分け方:=LEN(A2) が7でない。=ISNUMBER(A2) がTRUE、対処:元CSVから、列を文字列で取り込み直す
- 電話番号の先頭が0でない、起きていること:先頭の0が落ちた、見分け方:=LEFT(B2,1)="0" がFALSE。=ISNUMBER(B2) がTRUE、対処:同上
- 「1-2」「3/4」が「1月2日」「3月4日」に見える、起きていること:日付に変換された、見分け方:セルをクリックし、数式バーが日付(例:2026/1/2)か見る、対処:同上
- セルの値が右寄せ、起きていること:数値(や日付)として扱われている可能性、見分け方:配置を手で変えていなければ、文字列は通常左寄せ、対処:文字列にしたい列なら取り込み直す
- セルの左上に緑の三角、起きていること:数字が文字列として入っている印、見分け方:意図どおりなら「エラーを無視する」で消せる、対処:郵便番号などでは多くの場合そのままでよい
電話番号は桁数だけで判断しないでください。固定電話(03など)は10桁、携帯電話(090など)は11桁が一般的ですが、番号の種類で桁数は変わります。確実なのは先頭が0かどうかと、元のCSVとの照合です。
最も確実な確認方法は、元のCSVをメモ帳などのテキストエディタで開き、数件を目で比べることです。Excelの表示だけでは、変換前の値は分かりません。
保存にも注意が要ります。変換済みのブックを元のCSVに上書き保存すると、先頭の0はファイルからも失われます。作業は取り込み用の新しいブックで行い、保存する前にこの表を通してください。保存し直したCSVを再びダブルクリックで開けば、同じ変換がまた起きます。次に使う人にも、「データ」タブから取り込む運用を伝えておくと安全です。
AIに任せること、人が見ること
AIには、列名と数行の見本から「文字列にすべき列の候補」と確認式の案を出してもらえます。ただしAIは、あなたのExcelが実際にどう変換したかを見られません。式を試すことも、取り込みの実行も、元CSVとの照合も人の仕事です。
AIに渡すのは、列名と架空の数行だけにします。実在の氏名・住所・電話番号は貼らないでください。次の依頼文は、そのまま使えるひな形です(例の数値は説明用の架空のものです)。
CSVをExcelに取り込みます。以下は列名と、実データではない架空の例です。
列名:顧客ID,氏名,郵便番号,電話番号,生年月日,購入数,備考
例:00123,山田 太郎,0600001,0312345678,1990-04-05,3,1-2階
1. 文字列として取り込むべき列と、その理由を表にしてください。
2. 数値や日付のまま取り込んでよい列も挙げてください。
3. 取り込み後に先頭0の消失や日付化を調べる確認式を、列ごとに
Excelの関数で提案してください。返ってきた表は、そのまま信じず次の点を見ます。
- 「備考」の 1-2階 のように、日付に見えそうな文字が混ざる列が拾われているか
- 「顧客ID」のように、計算に使わない数字の列が文字列になっているか
- 「購入数」のように、集計したい列が文字列のままになっていないか

