[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『CSVのカンマと改行コードの削除』(みっこ)
ショッピングカートの注文履歴をダウンロードすると、稀に電話番号の最後に改行が入っていたり、住所の最後に改行が入っていたり、また、備考欄の顧客からのコメントに文章の途中で改行が入っていたりします。
この改行がある事で、受注管理ソフトに取り込む際に、正常に取り込まれなかったりしてしまいます。
文章の途中で改行がある場合は、その改行を削除して文章を繋げ、電話番号が住所等の最後に改行があるデータは削除するようなマクロを組みたいのですが、どのように記述するか教えて頂けないでしょうか。また、データ中にカンマを含む場合、カンマはドットに変更したいです。
単に置換でCtrl+Jを空白に置換するのではダメですか? マクロならそれを記録で。
もしダメでしたら、元のCSVデータがどのようなデータなのかと 現在の取り込み方法を教えてください。
(momo)
置換でできるのですか?
改行コードだと検索する値を何にしたら検索できますでしょうか?
(みっこ)
衝突の上に、解決したようですが一応
検索する文字の所にカーソルを置いた状態でCtrlとJを同時押しします。 見た目には何もないですが改行コードが入っていますので 置換する文字は空白のまま置換してみてください。 (momo)
質問を追加する場合は「返信・編集」で書き換えずに下にあるコメント欄から行ってください。 (独覚)
最後ですよね? A1に文字があるとすると =CODE(RIGHT(A1,1)) のような数式で数字はいくつが返りますか? (momo)
のような電話番号(最後に改行あり)は10
和歌山県○○市○○○39-1
のような
住所データ(最後に改行あり)は32
となりました。(みっこ)
10はLFで改行なのでCtrl+Jで置換できるはずです。 32はスペースなので半角スペースを""に置換すれば出来ると思いますが。 (momo)
ここで操作を一度戻して、改行ありの状態で(操作を戻した時に改行があるのをちゃんと確認しました)マクロの記録からマクロを作成しようと思ったのですが今度は以下のエラーが出ました。
置換対象のデータが見つかりません。検索対象のデータの書式と条件が正しく指定されているかどうか確認して下さい。このブックに一致するデータがあることが予め分かっている場合は、シートが保護されてないかどうか確認して下さい。保護されたシートのデータは置換できません。
さっきはできたのに、今度はできなくなってしまって…どうしてでしょうか???
(みっこ)
たぶん記録コードですとSelectionの範囲に対して実行するコードになってると思います。 対象範囲内に改行が無い場合にエラーになります。
対象範囲を選択して動作させるようにするか 範囲があらかじめ決まっているのでしたら
with columns("A:B") 'A〜B列が対象の場合 .Replace What:=Chr(10), Replacement:="", LookAt:=xlPart, SearchOrder:=xlByRows, _ MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False end with
のように範囲指定してやってみてください。 (momo)
が、ちゃんと正常に動くかをもう一度試してみたくて操作をまた戻してからマクロを実行すると上記と同じエラーがでます。
マクロではなく手作業で検索置換ではどうかなとやってみたところ、またしても同じエラーが出て置換できないのです(><)
出来るときとできない時があるのは何故なのでしょうか?
(みっこ)
えっと、手作業で置換したものはアンドゥ(元に戻す)機能で元に戻せますが マクロで置換したものはアンドゥできませんので元に戻ってないのではないかと推測します。 実際に改行が無いのではないでしょうか?
(momo)
また、今また改行のある状態でマクロを実行したところ、「置換対象のデータが見つかりません。検索対象のデータの書式と条件が正しく指定されているかどうか確認してください。・・・・・シートが保護されていないかどうか確認してください。」といったエラーメッセージが出てしまいました。
マクロの記録を使って作ったものですが、記述されてあったコードを貼り付け致します。
Sub Macro1()
'
' Macro1 Macro
'
'
Range("K6").Select ActiveWindow.SmallScroll Down:=-15 Range("C:C,H:H,I:I").Select Range("I1").Activate ActiveWindow.SmallScroll Down:=-6 Range("C:C,H:H,I:I,M:M,N:N").Select Range("N1").Activate ActiveWindow.ScrollColumn = 2 ActiveWindow.ScrollColumn = 3 Range("C:C,H:H,I:I,M:M,N:N,Z:Z").Select Range("Z1").Activate ActiveWindow.ScrollColumn = 2 ActiveWindow.ScrollColumn = 1 Range("C:C,H:H,I:I,M:M,N:N,Z:Z,E:E,J:J").Select Range("J1").Activate Selection.Replace What:="" & Chr(10) & "" & Chr(10) & "" & Chr(10) & "", Replacement:="", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False Range("I14").Select ActiveWindow.SmallScroll Down:=-12 Range("F6").Select ActiveWorkbook.Save End Sub
(みっこ)
問題は >What:="" & Chr(10) & "" & Chr(10) & "" & Chr(10) & "" ここだと思います。 1つのセルに改行コードが3つ入っていないと対象になりません。 Chr(10)を1つにしてみてください。
また、上のコードを手で書くと
Sub Macro1() Range("C:C,E:E,H:H,I:I,J:J,M:M,N:N,Z:Z") _ .Replace What:=Chr(10), Replacement:="", LookAt:=xlPart, SearchOrder:=xlByRows, _ MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False ActiveWorkbook.Save End Sub
だけで済むと思います。 (momo)
さて、コードを書き換え実行したのですが、何故だか改行が消えていませんでした。。
実行後、互換性に関するメッセージが表示されましたが、今後は表示しないにチェックをしてOKしました。
そこで確認しましたが、改行はとれておらず…再度実行してもやはり改行が残っています。。
何度も申し訳ないです…!
2007を使っていますが改行のあるデータは 折り返して全体を表示する の部分がオレンジに光っているのですが、実行後もこのオレンジの状態で、改行のあるデータの末尾にカーソルをあわせて矢印で左に移動させたところ、電話番号のデータに関しては一度押しただけで1文字分左に移動したので、改行がとれているという事でしょうか?( 折り返して全体を表示する の部分がオレンジのままにはなっていますが)
また、住所データも同じように確認したところ、3回矢印ボタンを押して初めて1文字分左に移動しました。ということは改行が2つ分ついているという事になりますでしょうか?
改行がとれたかどうかの確認はこの方法で良いでしょうか?
(みっこ)
ん〜 本当に改行コードなのかどうか?という所でしょうか 下のようなコードだとどうなりますか?
Sub Macro1() With Range("C:C,E:E,H:H,I:I,J:J,M:M,N:N,Z:Z") .Replace What:=Chr(10), Replacement:="", LookAt:=xlPart, SearchOrder:=xlByRows, _ MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False .Replace What:=Chr(13), Replacement:="", LookAt:=xlPart, SearchOrder:=xlByRows, _ MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False .Replace What:=Chr(32), Replacement:="", LookAt:=xlPart, SearchOrder:=xlByRows, _ MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False .WrapText = False End With ActiveWorkbook.Save End Sub
(momo)
という事は、改行コードではなかったのでしょうか??
いずれにしても解決できたので、大変感謝しています!
何度もご回答頂き、本当にありがとう御座いました。
(みっこ)
改行コード(LF)とキャリッジリターン(CR)とスペースを削除しています。 そのうちのどれかだったか セル書式の折り返して全体を表示が設定されていたか のいずれかだと思います。 (momo)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.