- ベストアンサー
CSVデータを3行に改行する方法
- エクセル、VB開発者の皆様からご解答を頂戴しました。ありがとうございました。
- データが本当に3行に改行されているかを確認してみました。添付画像の住所の表示方法は、折り返しで表示を解除してあります。上段に、セルの内容を見えるようにしました。3行になっています。
- これを、全データに対して、一度に行える、マクロ、VB、または関数での達人者の方からのお知恵を、スキルをお借りできればと切に思っております。どうぞよろしくお願い致します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>これを、全データに対して、一度に行える、マクロ、BV、または関数での達人者の方からのお知恵を、スキルをお借りできればと切に思っております。 前回の質問( http://okwave.jp/qa/q9221008.html )に対して補足、お礼が皆無の状態で締め切り新しい質問を投稿するのは如何穴ものでしょう?(回答者に失礼では?) 私は回答No.2を投稿しましたが、その内容を理解しているのでしょうか? 提起の模擬データが1件のみなので多数のデータに対する処理であるか否かが分かりませんでしたので対処方法を述べていませんが住所1、住所2、住所3の列について下へ必要数コピーすれば目的のように切り出しできます。 問題は住所3に相当する文字列が不要な場合でも空欄の3行目あるか否かで数式の組み立て方が異なります。 前回の質問( http://okwave.jp/qa/q9221008.html )への回答は下記の数式です。 E2=LEFT(D2,FIND(CHAR(10),D2)-1) F2=MID(D2,FIND(CHAR(10),D2)+1,FIND(CHAR(10),SUBSTITUTE(D2,E2&CHAR(10),""))-1) G2=SUBSTITUTE(D2,E2&CHAR(10)&F2&CHAR(10),"") これをF2とG2セルの数式を下記のように変更すれば住所のセルへ2行のみ入力されている場合でも目的通りに文字列分割ができます。 F2=MID(D2,FIND(CHAR(10),D2)+1,FIND(CHAR(10),SUBSTITUTE(D2,E2&CHAR(10),"")&CHAR(10))-1) G2=SUBSTITUTE(D2&CHAR(10),E2&CHAR(10)&F2&CHAR(10),"") 尚、今回の添付画像は文字読めませんので模擬データの提示には読み取り可能なものにしてください。
その他の回答 (2)
- nan93850673
- ベストアンサー率32% (179/553)
元の質問を見ていないのですがExcelの場合、拡張子が".csv"ならダブルクオーテーションで囲まれた範囲内は、途中に改行が有っても一つの項目として扱われます。 なので、workbooks.openで開けば良いだけでは。
- kkkkkm
- ベストアンサー率66% (1725/2595)
以下でいかがですか。 Sub Example() Dim t As Variant, i As Long For i = 2 To Cells(Rows.Count, "A").End(xlUp).Row t = Split(Cells(i, "D"), vbLf) ''vbCrLfとかvbCrでも試してください Cells(i, "E").Value = t(0) Cells(i, "F").Value = t(1) Cells(i, "G").Value = t(2) Next i End Sub
お礼
お忙しい中、大変にありがとうございました。記述をコピーさせて頂いて うまく自分でできることを願いながら、行わせて頂きます。本当にありがとうございました。
お礼
お忙しいところ大変にありがとうございました。 補足にありますように、最初の質問事態に、補足を加えたかったのですが、それが出来ず(入る画面にたどり着かず)不本意に、新投稿となってしまい、運営の方で締め切りとしたという連絡が本日ありました。大変に申しわけありませんでした。 ご解答頂いたものは、慎重に扱い自分でファイル上で動かせるようにためさせて頂きます。
補足
大変に申し訳ございません。本当に、1つセルに3行の改行でデータが格納されているのか、ただ表示形式でそうみえるだけで、ということが佐賀かではありませんでしたので、もう一度確めた後に、補足だけを書き足したかったのですが、その画面にいくことが出来ずに、新たな投稿という形になってしまったのです。 重ねて、大変に申し訳ございませんでした。