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を数値として扱う
  • 日付を自動変換する
  • 重複行を勝手に削除する
  • 閉じていない引用符の位置を推測して補う

目的は「エラーを消すこと」ではなく、元の値を変えずに正しい構造として読める状態へ戻すことです。

再インポート前の確認

修正したら、そのまま本番データへ流さず、最低限次を確認します。

  1. レコード件数が意図せず増減していない
  2. 想定列数がそろっている
  3. 先頭ゼロや長いIDが変わっていない
  4. 引用符内のカンマ・改行が保持されている
  5. 修正後のファイルをもう一度読み込んでも構造エラーが出ない

CSVのトラブルは、文字コードだけ直せば終わるとは限りません。逆に、原因を順番に切り分ければ、どこを直す必要があり、どこは触ってはいけないかが見えてきます。

参考一次資料

おすすめの記事