CSVを取り込もうとして「文字化けする」「1列にまとまる」「途中の行からずれる」「行数がおかしい」といった症状が出たとき、最初からExcelで開いて保存し直すのはおすすめしません。CSVの失敗原因は、見た目が似ていても別物だからです。
まず元ファイルをコピーして保全し、文字コード → 区切り文字 → 列数 → 引用符 → セル内改行の順に確認します。この順なら、データそのものを変えてしまう前に「どこで構造が崩れているか」を切り分けやすくなります。
まず症状を5つに分ける
「CSVが開けない」と一括りにせず、症状を分けます。
- 日本語だけ読めない → 文字コードの可能性が高い
- 全データが1列に入る → 区切り文字の可能性が高い
- 特定行から列が右へずれる → 列数、引用符、値の中のカンマを確認
- 1件のデータが複数行に見える → 引用符内の改行を確認
- 途中から残り全部がおかしい → 閉じていないダブルクォートを疑う
ここで大事なのは、症状だけを見て値を削ったり、列を足したりしないことです。CSVは単なる「カンマ入りの文字列」ではなく、引用符によってカンマや改行を1つの値として保持できます。
1. 文字コードを確認する
日本語が 縺薙s縺ォ縺。縺ッ のように崩れるなら、列構造より先に文字コードを確認します。
UTF-8のCSVは、BOM付きであればExcelで通常どおり開ける場合があります。BOMなしUTF-8では、MicrosoftもPower Queryの「テキスト/CSVから」などを使って取り込む方法を案内しています。ダブルクリックで開いてすぐ上書きするより、インポート画面のプレビューで文字が正しく見えるかを確認したほうが安全です。
文字コードを直す目的で、数値や日付まで自動変換する必要はありません。00123 のようなコードは、数値化すると 123 に変わってしまいます。
2. 区切り文字を確認する
CSVという名前でも、実際の受け渡しではカンマ以外にTAB、セミコロン、パイプが使われることがあります。
全データが1列に入る場合は、ファイルに区切りがないとは限りません。取り込み側が「カンマ」と判断しているのに、実データがTAB区切りなら列に分かれません。
Power QueryのText/CSV取り込みでは、ファイルのプレビューで区切りを確認できます。まず「何文字で分けるべきファイルか」を確定してから、別形式へ変換します。
3. 列数が途中で変わっていないか確認する
正常な一覧なら、多くの場合は各レコードの列数がそろいます。
たとえばヘッダーが
id,name,amount
で3列なのに、一部のレコードだけ4列なら、その行には理由があります。
1,田中,1000
2,佐藤,2000,EXTRA
3,鈴木,3000
ただし、ここで4列目を自動削除するのは危険です。正しいデータが4列で、ヘッダーや他の行が欠けている可能性もあるからです。まず異常レコードを特定し、元データや出力元の仕様へ戻って確認します。
4. 値の中のカンマとダブルクォートを確認する
RFC 4180で文書化されている一般的なCSV形式では、カンマ、改行、ダブルクォートを含むフィールドはダブルクォートで囲み、フィールド内のダブルクォートは2個に重ねます。
たとえば次は1件3列です。
1,"東京,大阪","he said ""OK"""
東京,大阪 のカンマは列の境界ではありません。引用符を無視して単純にカンマで分割すると、正常なCSVまで壊れます。
5. セル内改行を「行の終わり」と決めつけない
CSVでは、引用符で囲まれたフィールド内に改行を持てる場合があります。
id,note
1,"1行目
2行目"
2,完了
見た目は4行ありますが、データ上のレコードはヘッダーを含めて3件です。大容量CSVを「改行ごとに分割する」処理が危険なのはこのためです。
特定の行から急に列が崩れたときは、その直前に閉じていない引用符がないかも確認します。閉じる位置を機械的に推測すると、その後のレコードまで別の意味に変えてしまう可能性があります。
直してはいけないもの
インポートを成功させるためでも、次の変更は原因確認なしに行わないほうが安全です。
- 列数を合わせるために値を削除する
- 足りない列を空欄で自動追加する
00123を123にする- 長いIDを数値として扱う
- 日付を自動変換する
- 重複行を勝手に削除する
- 閉じていない引用符の位置を推測して補う
目的は「エラーを消すこと」ではなく、元の値を変えずに正しい構造として読める状態へ戻すことです。
再インポート前の確認
修正したら、そのまま本番データへ流さず、最低限次を確認します。
- レコード件数が意図せず増減していない
- 想定列数がそろっている
- 先頭ゼロや長いIDが変わっていない
- 引用符内のカンマ・改行が保持されている
- 修正後のファイルをもう一度読み込んでも構造エラーが出ない
CSVのトラブルは、文字コードだけ直せば終わるとは限りません。逆に、原因を順番に切り分ければ、どこを直す必要があり、どこは触ってはいけないかが見えてきます。
参考一次資料
- Microsoft Support: CSV、HTML、またはテキスト ファイルからデータをインポートする
https://support.microsoft.com/ja-jp/excel/import-data-from-a-csv-html-or-text-file - Microsoft Support: Excel で CSV UTF-8 ファイルを正しく開くには
https://support.microsoft.com/ja-jp/excel/opening-csv-utf-8-files-correctly-in-excel - RFC Editor: RFC 4180
https://www.rfc-editor.org/info/rfc4180/
