• 締切済み

エクセルでの改行の削除

宜しくお願いします。 CSVデータをダウンロードしてエクセルデータに直して、必要な箇所を変換し、別のCSVデータに作りかえる作業をしています。 元のデータには改行が入っており、作り変えたいデータは改行がだめなので、置換でCtrl+J→全角スペースでやりましたが、見かけ上は改行はなくなっているのですが、変換先のフォーマットてCSVに変換すると改行が入ってしまいます。 このやり方では、そのようなことがおこるのでしょうか? 何が悪いのか分かりません。。。 どこを直せばいいのか、また、他に何かよい方法があれば教えてください。

みんなの回答

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんにちは。Wendy02です。 当面、どこかのブックに、以下のようなコードを置いて、CSV ファイルから、問題のコードを削除してみてください。初歩的なコードですが、目的は果たせるような気がしています。 '<標準モジュールに貼り付けて、これもフォームのボタンにつけるとよいです。> Sub CRLFCodeDeleting() Dim c As Range Dim buf As String Dim bufeach As String Dim i As Long Application.ScreenUpdating = False For Each c In ActiveSheet.Range("A1").CurrentRegion  If Not IsEmpty(c.Value) Then    buf = Application.Substitute(c.Value, vbCr, " ")    buf = Application.Substitute(buf, vbLf, "")    buf = Application.Substitute(buf, """", "")       '半角カタカナのみを全角にするオプション開始    If buf Like "*[" & Chr(166) & "-" & Chr(223) & "]*" Then    For i = 1 To Len(buf)     If Mid$(buf, i, 1) Like "[" & Chr(166) & "-" & Chr(223) & "]" Then      bufeach = bufeach & StrConv(Mid$(buf, i, 1), vbWide)     Else      bufeach = bufeach & Mid$(buf, i, 1)     End If    Next i    buf = bufeach    End If     bufeach = ""    'オプション終わり    c.Value = buf    buf = ""  End If Next Application.ScreenUpdating = True End Sub >エクセルにしてデータを保存する前に、CSVの時点で置換でctrlJをしないとだめですか? その作業の後先については、当面関係ないと思っています。 >フォーマットにCSVになおすマクロのフォームボタンがあるのですが、それでCSVに変換したものをみると、改行があった あいうえお のあとで、次の行にいってしまっています。。。 ちょっと気になります。CSVになおすマクロって、もしかしたら、特殊なことをしている可能性がありますね。上のコードでダメな場合は、そのマクロを見させていただくようになるかと思います。 >JIS関数で全角になおして、それを値だけコピーしたものを、そのフォーマット(エクセル)にはりつけました。 そのインターネット用のプログラムは、このサイトでも、いくつか出来ていましたが、今回は、半角カタカナだけが対象にしました。

tamako1111
質問者

お礼

ありがとうございます。 あまりシステムのことは詳しくないので、 会社のシステム作った人に聞いてみました。 ""が全ての項目に入っていないから・・・みたいな説明でした。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんばんは。 自分で、Sampleデータを作ってみましたが、確信が持てません。 おそらく、元のデータは、 "abc def",efg,hij など、「" "」入りのはずです。できるだけ正確に、CSV のテキストのサンプルを提示していただけないでしょうか? Excelにインポートした時に、「・」はついていますか?ついていませんか? >Ctrl+J→全角スペースでやりましたが、見かけ上は改行はなくなっているのですが、 もしかしたら、Ctrl + J =Char(10) だけではないかもしれません。 例えば、このようにして、 =CODE(RIGHTB(A1,3)) 戻り値が、「10」が出たとしたら、 =CODE(RIGHTB(A1,4)) にしたら、「13」が出てこないでしょうか? こちらは、ワークシート上で試してみましたが、置換が出来ませんので、元から処理したほうがよいようです。 ご自分でされるなら、テキスト・エディタの正規表現やPerl を使えばよいし、こちらで解決されるのでしたら、VBAマクロコードを提供します。

tamako1111
質問者

お礼

もしや、CSVにダウンロードした際に、エクセルにしてデータを保存する前に、CSVの時点で置換でctrlJをしないとだめですか? それは関係ないですかね・・・

tamako1111
質問者

補足

わかりにくくてすいません。 自社のCSVでの情報を、他のサイトにのせてもらうためのCSVに変換したいのです。 例えば、自分の会社が旅行会社とすると、旅行サイトに自分の会社のツアーの情報をのせてもらうために、自分の会社のCSVデータを、その旅行サイトのCSVのフォーマットに合うように変換しようとしています。 自社データでは、例えば あいうえお かきくけこ さしすせそ と、ひとつのセルに入っているものを、 置換でctrlJ→全角スペース として、 ひとつのセルに、 あいうえお かきくけこ さしすせそ という表示になるようにしました。 で、半角の文字をいれるとエラーが出るので、JIS関数で全角になおして、それを値だけコピーしたものを、そのフォーマット(エクセル)にはりつけました。その状態では、フォーマットにはりつけた後も、見かけ上はひとつのセルに あいうえお かき・・・ とおさまっているのですが、フォーマットにCSVになおすマクロのフォームボタンがあるのですが、それでCSVに変換したものをみると、改行があった あいうえお のあとで、次の行にいってしまっています。。。

  • cockerel
  • ベストアンサー率46% (253/548)
回答No.1

>変換先のフォーマットてCSVに変換すると改行が入ってしまいます。 「変換先のフォーマット」とCSVの関係がよくわかりませんが、たとえばWordを用いて開いたときに全角スペースに置き換わっていれば、正常であると判断されます。 行と行の間の区切り(つまりレコードの区切り)の意味であれば当然改行は残ります。「Ctrl+J→全角スペース」はセル内改行の置換です。 「変換先のフォーマット」がインポートするアプリケーションのフォーマットの意味であれば、スペース区切りでインポートすれば、改行があったときのようになるかも知れません(アプリケーションがわからないので不確かです)。 全角スペースはわかりにくいので(特にExcelではわかりにくい)、アンダースコア等(使用している場合には別の文字、もしくはいくつかの文字の組み合わせ)を使用すると置換の確認が容易になると思われます。

関連するQ&A

専門家に質問してみよう