CSVをExcelで開いたときに全データが1列へ入る場合は、文字コードより先に区切り文字を確認し、ダブルクリックではなくExcelの読み込み画面で同じ区切りを指定します。
1列になる主な理由
CSVは値の間を記号で区切ったテキストです。一般的にはカンマを使いますが、作成元によってタブ、セミコロン、パイプ | が使われます。
Excelが想定する区切りとファイルの区切りが違うと、1行全体が1つのセルへ入ります。日本語が正常なら、文字コードを変換する前に区切り文字を確認してください。
CSV診断で区切りを確認する
CSVの文字コードと区切り文字を確認する方法でファイルを選びます。結果の「区切り文字」に、カンマ、タブ、セミコロン、パイプのいずれかが表示されます。
CSV_DELIMITER_UNDETECTED が表示された場合、次の可能性があります。
- 1列しかないデータで区切りが存在しない
- 対応外の記号で区切られている
- 行ごとに区切りが違う
- 引用符や改行の構造が崩れている
- 実際にはCSVではない
自動判定は推定なので、テキストエディターで先頭数行を確認するか、作成元の出力仕様と照合します。
Excelで正しく分割して読み込む
- Excelで空のブックを開く
- 「データ」から「テキストまたはCSVから」を選ぶ
- 対象ファイルを指定する
- 文字コードを診断結果に合わせる
- 区切り文字をカンマ、タブ、セミコロンなどから選ぶ
- プレビューで見出しと各列が正しく分かれたことを確認する
- 必要な列型を指定して読み込む
診断が「タブ」と表示したファイルは、拡張子が .csv でも実質はタブ区切りです。拡張子だけを .txt へ変える必要はなく、読み込み時にタブを指定すれば確認できます。
区切りを合わせても列がずれる場合
CSV_COLUMN_MISMATCH や CSV_PARSE_WARNING が表示されたら、単純な区切り指定だけでは直らない可能性があります。問題が出る行の周辺で、次を確認します。
- 値の途中にカンマがあり、ダブルクォートで囲まれていない
- 値の中の改行が正しく引用されていない
- ダブルクォートの開始と終了が揃っていない
- 行末に余分な区切りがある
- 一部の行だけ列が不足している
たとえば住所 東京都千代田区, 1-1 を1つの値として扱うなら、CSV上では通常ダブルクォートで囲む必要があります。手作業で全行を直す前に、作成元のエクスポート設定を修正できないか確認してください。
「区切り位置」で直す場合の注意
すでに1列へ読み込んだデータは、Excelの「区切り位置」で分割できます。ただし、文字コードの誤認識、先頭ゼロ、日付変換、引用符内の区切りを完全に戻せない場合があります。
元CSVが残っているなら、空のブックから読み込み直す方が安全です。元ファイルを上書きせず、読み込み後に行数と列数を比較します。
文字化けも同時に起きる場合
1列表示と文字化けは別々に直します。先に文字コードを正しく指定し、次に区切り文字を合わせます。UTF-8とBOMの扱いはUTF-8のCSVがExcelで文字化けする場合を確認してください。