こんにちは。
エクセルで、[貼り付け用シート]に張り付けたダウンロードデータを
[計算用シート]で文字列を入れたものを[保存用シート]に張り付けて、CSVで保存するVBAを作っています。
[貼り付け用シート]
コントロールカラム | 商品管理番号 | 商品名 |
---|---|---|
item-01 | 送料無料 愛媛県産 みかん 蜜柑 10kg | |
item-02 | 送料無料 愛媛県産 みかん 蜜柑 15kg | |
item-03 | 送料無料 愛媛県産 みかん 蜜柑 20kg |
↓
[計算用シート]
コントロールカラム | 商品管理番号 | 商品名 |
---|---|---|
u | item-01 | 【本日ポイント2倍】送料無料 愛媛県産 みかん 蜜柑 10kg |
u | item-02 | 【本日ポイント2倍】送料無料 愛媛県産 みかん 蜜柑 15kg |
u | item-03 | 【本日ポイント2倍】送料無料 愛媛県産 みかん 蜜柑 20kg |
データは3000件に満たないものもあるので、不要データを削除したり、
ここまでは前任者のソースを切り貼りしてなんとか作成できたのですが、
「C列」の「商品名」の部分に半角スペースが多数入っているので同時に置換されてしまい困っています。
同じような動作をさせつつ、C行は除外する方法などありましたら教えていただきたいです。
よろしくお願いいたします。
▼▼▼
VBA
1Sub マクロ1() 2Sheets("計算用シート").Select 3Range("A1", "C3000").Copy 4Sheets("保存用シート").Select 5Range("A1").PasteSpecial Paste:=xlPasteValues 6Application.CutCopyMode = False 7 8 9 10Sheets("保存用シート").Select 11 Dim msg As String 12 Dim col_num As Long 13 Dim row_num As Long 14 Dim row_end As Long 15 Dim i As Long 16 17 18 col_num = ActiveCell.Column 19 row_num = ActiveCell.Row 20 21 row_end = Cells(Rows.Count, col_num).End(xlUp).Row 22 23 For i = row_end To row_num Step -1 24 If Len(Cells(i, col_num).Value) = 0 Then 25 Cells(i, col_num).Delete xlShiftUp 26 End If 27 Next i 28 29 30 Sheets("保存用シート").Select 31 32 Dim h As Range 33 Dim buf As String 34 Dim FileN As String 35 36 FileN = Application.GetSaveAsFilename( _ 37 InitialFileName:="\CSV_" & Format(Now(), "yyyymmddhhmm") & ".csv", _ 38 FileFilter:="CSV ファイル (*.csv), *.csv") 39 Open FileN For Output As #1 40 41 With Application 42 For Each h In Range("A1:A" & Range("A65536").End(xlUp).Row) 43 buf = Join(.Transpose(.Transpose(Range(h, Cells(h.Row, "IV")).Value)), " ") 44 buf = .Trim(buf) 45 buf = Replace(buf, " ", ",") 46 Print #1, buf 47 Next 48 End With 49 50End Sub 51 52
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/15 04:57