CSVのセル内改行でデータが別の行に分かれないようにするには
改行を含む値が二重引用符で囲まれていれば、CSVを読み込んでも同じセルに残せます。2件のメモを使って、内容と件数の確認方法を紹介します。
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を直接読み込む
- 元のプログラムから、メモの改行とCSVの引用を保って出力します。テキストの改行をすべて削除したり、すべてレコード区切りとして扱ったりしないでください。
- JOIN SHEETにCSVファイルを直接追加します。この例では先頭行のID・Note・Amountを列名として読み込みます。
- AのNoteが一つのセルに残り、Bが次のレコードになっているか確認します。データ2行、3列が正しい結果です。
- Excelに保存した場合はAのNoteセルを開き、実際の改行が残っているか確認します。行の高さや折り返し表示によっては、画面に二行とも表示されないことがあります。
テキスト行数ではなく2件のデータを確認
firstとsecondはAのNoteセル内に残ります。CSVテキストは見出しを含めて4行ありますが、データは2件です。Amountの10と20も、それぞれAとBに対応したままです。
| ID | Note | Amount |
|---|---|---|
| A | first ↵ second | 10 |
| B | ok | 20 |
引用されていない改行は元データで修正
引用符が抜けたり途中で閉じたりすると、改行がセル内なのか新しいレコードなのか判別できなくなります。元プログラムの出力を修正してください。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接続の停止は対象にしていません。 説明には別途作成した架空のデータを使用しています。