CSVをダブルクリックしてExcelで開くと、値が変わってしまうことがあります。たとえば郵便番号「0600001」が「600001」に、商品コード「00123」が「123」に、品番「1-2」が「1月2日」になります。
CSVには「この列は文字列として扱う」という型の情報がありません。ダブルクリックで開くと、Excelは値の見た目から数値か日付かを推測し、自動で変換します。そのため、このようなことが起きます。
防ぐには、ダブルクリックで開かずに、取り込むときに列ごとのデータ型を自分で指定します。この記事では、次の3点を説明します。
- 「テキストまたはCSVから」を使った取り込み方
- Power Queryで列ごとに型を指定する取り込み方
- 取り込んだ後に、値が変換されていないかを確かめる方法
変換されやすい値と、起きること
| CSV内の値 | ダブルクリックで開いたときに起きやすいこと |
|---|---|
| 先頭が0の数字(郵便番号・電話番号・商品コード・社員番号) | 数値とみなされ、先頭の0が消える |
| 桁数の多い数字(口座番号・伝票番号・JANコードなど) | 指数表示(例:1.23457E+15)になる。16桁目以降は0に置き換わる |
| ハイフンやスラッシュでつないだ数字(例:1-2、3/4) | 日付とみなされ、「1月2日」「3月4日」などになる |
| 数字の間にEを含む値(例:12E3) | 指数表記の数値とみなされる |
一度変換された値は、後からセルの表示形式を「文字列」に変えても元に戻りません。 消えた0や16桁目以降の数字は、セルの値から失われています。
また、ダブルクリックで開いたCSVをそのまま上書き保存すると、変換後の値でCSVが書き換わります。元のCSVは上書きせずに残しておいてください。
取り込む前に、文字列にしたい列を決める
まず、CSVをメモ帳などのテキストエディターで開きます。Excelを通さない元の値を確認するためです。そのうえで、列を次の3種類に分けておきます。
- 文字列として残す列:郵便番号、電話番号、商品コード、社員番号、顧客ID、口座番号、品番など。計算に使わず、0やハイフンを含めた見たままの値が正しい列
- 数値にする列:数量、単価、金額など、合計や計算に使う列
- 日付にする列:受注日、請求日など、日付順の並べ替えや期間の絞り込みに使う列
迷ったら文字列にしておくのが安全です。数字だけでできた値でも、計算に使わないコードなら文字列で問題ありません。
なお、開いたときに文字が化けて読めない場合は文字コードの問題です。この記事の手順とは別の対処が必要です。
方法1:全列を文字列のまま取り込む
計算に使う列がない場合や、元の値のまま確認したいだけの場合は、全列を文字列で取り込むのが手早い方法です。
- Excelで空のブックを開く(CSVはダブルクリックしない)
- 「データ」タブの「データの取得と変換」グループで「テキストまたはCSVから」を選ぶ
- CSVファイルを選び、「インポート」をクリックする
- プレビュー画面上部の「データ型検出」で「データ型を検出しない」を選ぶ
- プレビューで先頭の0や「1-2」が元のまま表示されていることを確かめ、「読み込み」をクリックする
これで、すべての列が文字列として新しいシートに読み込まれます。ただし、金額や数量も文字列になります。合計などに使う列があるなら、方法2を使ってください。
プレビュー画面の項目名や配置は、Excelのバージョンによって違うことがあります。「データ型検出」が見当たらない場合も、方法2の手順で型を指定してください。
方法2:Power Queryエディターで列ごとに型を指定する
文字列・数値・日付を列ごとに分けたいときは、Power Queryエディターで型を指定します。
手順
- 「データ」タブの「テキストまたはCSVから」でCSVを選び、「インポート」をクリックする
- プレビュー画面で「データの変換」をクリックし、Power Queryエディターを開く
- 画面右側の「適用したステップ」を見る。通常は「ソース」「昇格されたヘッダー数」「変更された型」の3つが並んでいる
- 「変更された型」の左にある×をクリックし、このステップを削除する
- 文字列にしたい列の見出しを選ぶ(複数の列はCtrlキーを押しながらクリック)。列見出しの左にある型のアイコンか、「変換」タブの「データ型」で「テキスト」を選ぶ
- 数値にしたい列は「整数」か「10進数」、日付の列は「日付」を、同じ方法で指定する
- 各列のアイコンが意図どおりか確かめる(テキストは「ABC」)。確認できたら、「ホーム」タブの「閉じて読み込む」をクリックする
「変更された型」を削除する理由
「変更された型」は、Excelが値を見て推測した型を自動で当てはめるステップです。このステップで郵便番号の列が「整数」になっていれば、その時点で先頭の0は消えています。後からテキストへの変更を追加しても、0が消えた「600001」が文字列になるだけです。
ステップを削除せずに型を変えようとすると、「列タイプの変更」という確認画面が出ることがあります。そのときは「新規手順の追加」ではなく「現在のものを置換」を選んでください。その列だけ、自動で推測された型を置き換えられます。
詳細エディターで確認する
「ホーム」タブの「詳細エディター」を開くと、型の指定は次のような1行になっています。列名は実際のCSVに合わせて読み替えてください。
#"変更された型" = Table.TransformColumnTypes(#"昇格されたヘッダー数",{{"郵便番号", type text}, {"商品コード", type text}, {"数量", Int64.Type}, {"受注日", type date}})
type text は文字列、Int64.Type は整数、type date は日付です。先頭の0を残したい列が type text になっているかを、ここで確かめられます。
日付の列が正しく読めないとき
「05/10/2026」のように、日と月のどちらが先か分からない形式の日付があります。この列に「日付」を指定すると、月と日が入れ替わったり、エラーになったりすることがあります。
その場合は、列見出しの型のアイコンから「ロケールを使用...」を選びます。そこでCSVを作ったシステムの地域を指定してから変換します(例:日/月/年の順なら英語(英国))。
どちらの順か分からないときは、元のCSVを見て、13以上の数字がどちらの位置に入っているかを探すと判断しやすくなります。
Excelの「自動データ変換」の設定も確認する
Microsoft 365の比較的新しいExcelには、「ファイル」→「オプション」→「データ」に「自動データ変換」の設定がある場合があります。先頭の0を削除して数値にする、長い数値を指数表示にする、日付に変換する、といった変換を個別にオフにできます。
ただし、この設定はそのパソコンのExcelにしか効きません。同じCSVでも、別の人が開けばその人の設定で変換されます。複数人で同じCSVを扱う業務では、設定に頼らずに、方法1・方法2の取り込み手順を共有するほうが確実です。設定項目が見当たらない場合は、お使いのバージョンにはない機能と考え、取り込み手順で対応してください。
ほかに、以前のExcelの「テキストファイルウィザード」を表示する設定にしている場合は、それも使えます。ウィザードの3ページ目で列を選び、「列のデータ形式」で「文字列」を指定します。
取り込んだ後に変換されていないか確認する
取り込みが終わったら、元のCSVと見比べて次の点を確認します。
| 確認項目 | 確認方法 |
|---|---|
| 行数が一致しているか | 「クエリと接続」ウィンドウの読み込み行数と、元のCSVのデータ行数(見出しを除く)を比べる |
| 先頭の0が残っているか | 郵便番号なら =LEN(A2) が7になるか確かめる。桁数がそろっていない行はフィルターで探す |
| 文字列として入っているか | 文字列にしたはずの列で、=ISTEXT(A2) がTRUEになるか確かめる |
| 長い数字の末尾が0に変わっていないか | 数行を選び、メモ帳で開いた元のCSVの値と1文字ずつ見比べる |
| 日付に化けていないか | 品番やコードの列に、「月」や「/」が入った値や右寄せの値がないか確かめる |
| 数値・日付の列が計算に使えるか | 金額の列で =SUM() が0にならないか、日付の列で並べ替えると日付順になるかを確かめる |
桁数のずれは、次の式でまとめて数えられます。郵便番号がA2:A1000にある場合、7桁でない行の件数が出ます。0なら、先頭の0は残っています。
=SUMPRODUCT((A2:A1000<>"")*(LEN(A2:A1000)<>7))
文字列にした列には、緑色の三角(「数値が文字列として保存されています」)が出ることがあります。意図して文字列にした列であれば、そのままで問題ありません。
CSVの中身が新しくなったとき
この方法で作ったシートは、元のCSVファイルとつながっています。同じ場所・同じファイル名のCSVが新しい内容に置き換わったら、「データ」タブの「すべて更新」を押してください。指定した型のまま読み込み直せるので、ダブルクリックで開き直す必要はありません。
更新した後も、行数と先頭の0は同じ方法で確認してください。
取り込んだデータをCSVとして保存し直すとき
文字列として取り込んだ値は、CSVに保存しても0が付いたまま書き出されます。ただし、保存したCSVをダブルクリックで開くと、Excelがまた変換するため、0が消えたように見えます。
出力したCSVが正しいかどうかは、Excelではなくメモ帳などで開いて確認してください。
