CSVのセル内改行でデータが別の行に分かれないようにするには

改行を含む値が二重引用符で囲まれていれば、CSVを読み込んでも同じセルに残せます。2件のメモを使って、内容と件数の確認方法を紹介します。

説明図: セル内改行を含むCSVを一つのレコードとして読む
架空のデータを使った説明図です。実際の画面キャプチャではありません。

CSVのメモに改行があっても、その値が二重引用符で正しく囲まれていれば、同じセルの内容として読み込めます。元のCSVをJOIN SHEETに直接追加し、メモが分割されていないか、データの件数が合っているかを確認しましょう。

二行のメモが入った一つのセル

架空のNotesにはAとBの2件があります。AのNoteは同じセル内でfirstの次に改行し、secondが続きます。CSVテキストではNote全体を二重引用符で囲みます。

ID,Note,Amount
A,"first
second",10
B,ok,20

下の表と説明図では、読みやすさのためにセル内改行を↵で表しています。入力する文字でも、アプリ画面の表示を再現したものでもありません。

Notes

ID Note Amount
A first ↵ second 10
B ok 20

二重引用符を残したCSVを直接読み込む

  1. 元のプログラムから、メモの改行とCSVの引用を保って出力します。テキストの改行をすべて削除したり、すべてレコード区切りとして扱ったりしないでください。
  2. JOIN SHEETにCSVファイルを直接追加します。この例では先頭行のID・Note・Amountを列名として読み込みます。
  3. AのNoteが一つのセルに残り、Bが次のレコードになっているか確認します。データ2行、3列が正しい結果です。
  4. Excelに保存した場合はAのNoteセルを開き、実際の改行が残っているか確認します。行の高さや折り返し表示によっては、画面に二行とも表示されないことがあります。

説明図: 引用されたCSVを直接取り込む

テキスト行数ではなく2件のデータを確認

firstとsecondはAのNoteセル内に残ります。CSVテキストは見出しを含めて4行ありますが、データは2件です。Amountの10と20も、それぞれAとBに対応したままです。

ID Note Amount
A first ↵ second 10
B ok 20

説明図: テキスト行数ではなく2件のデータを確認

引用されていない改行は元データで修正

引用符が抜けたり途中で閉じたりすると、改行がセル内なのか新しいレコードなのか判別できなくなります。元プログラムの出力を修正してください。JOIN SHEETが意図を推測して修復するわけではありません。値に引用符そのものがある場合も、CSVの規則に沿った出力が必要です。

拡張子をTXTからCSVに変えても、正しい引用構造にはなりません。

自分のファイルで始めましょう

JOIN SHEETを使ってみる ↗

Excel・CSVの作業はPCでご利用ください。
新しいタブで開くため、作業中のデータは置き換わりません。

サンプルの検証日:

出典

Why does PQ not like Hard Return (Alt+Enter)? (Reddit r/excel)

原文ではXLSBへの接続が止まる問題と、TXTへの変換後にセル内改行で行が分かれる問題が挙げられています。ここでは正しく引用されたCSVのセル内改行だけを扱い、XLSB接続の停止は対象にしていません。 説明には別途作成した架空のデータを使用しています。