【发布时间】:2021-08-03 21:38:16
【问题描述】:
我有一个可以格式化一些数据的宏。但由于某种原因,它用逗号保存了额外的行,这给我带来了问题。我的宏是否有问题导致此问题或如何解决此问题?数据以 Excel 文件的形式提供给我。我将它与宏一起粘贴到我的工作表中,运行它,然后另存为 CSV。
宏代码:
Option Explicit
Sub runClick()
' remove MRT rows
Application.DisplayAlerts = False
Dim rng As Range
Dim LR As Long
Dim LC As Long
LR = Worksheets("WeeklyWelcomeEmailData").Cells(Rows.Count, 1).End(xlUp).Row
LC = Worksheets("WeeklyWelcomeEmailData").Cells(1, Columns.Count).End(xlToLeft).Column
Set rng = ThisWorkbook.Worksheets("WeeklyWelcomeEmailData").Range("A1:Z" & LR)
rng.AutoFilter Field:=4, Criteria1:="MRT"
rng.Offset(1, 0).SpecialCells(xlCellTypeVisible).Delete
AutoFilterMode = False
Application.DisplayAlerts = True
' find and replace Purpose column (S)
Range("S:S").Replace What:="PURCHASE", Replacement:="Purchase", MatchCase:=False
Range("S:S").Replace What:="RESELL", Replacement:="Resale", MatchCase:=False
' remove commas and extra spaces in Vendor column (F)
Dim tVendor As String
tVendor = "F1:F" & Cells(Rows.Count, "F").End(xlUp).Row
Range(tVendor) = Evaluate("IF(" & Range(tVendor).Address(0, 0) & "="""","""",Trim(SUBSTITUTE(" & Range(tVendor).Address(0, 0) & ","","","" "")))")
' format to short date
'H
Dim tShortDate1 As String
tShortDate1 = "H1:H" & Cells(Rows.Count, "H").End(xlUp).Row
Range(tShortDate1).NumberFormat = "m/d/yyyy"
'T
Dim tShortDate2 As String
tShortDate2 = "T1:T" & Cells(Rows.Count, "T").End(xlUp).Row
Range(tShortDate2).NumberFormat = "m/d/yyyy"
'X
Dim tShortDate3 As String
tShortDate3 = "X1:X" & Cells(Rows.Count, "X").End(xlUp).Row
Range(tShortDate3).NumberFormat = "m/d/yyyy"
'Y
Dim tShortDate4 As String
tShortDate4 = "Y1:Y" & Cells(Rows.Count, "Y").End(xlUp).Row
Range(tShortDate4).NumberFormat = "m/d/yyyy"
End Sub
保存后输出
Data,Data,Data,Data,Data,Data,Data,Data,Data,Data,Data,Data,Data,Data,Data,Data
Data,Data,Data,Data,Data,Data,Data,Data,Data,Data,Data,Data,Data,Data,Data,Data
Data,Data,Data,Data,Data,Data,Data,Data,Data,Data,Data,Data,Data,Data,Data,Data
Data,Data,Data,Data,Data,Data,Data,Data,Data,Data,Data,Data,Data,Data,Data,Data
Data,Data,Data,Data,Data,Data,Data,Data,Data,Data,Data,Data,Data,Data,Data,Data
Data,Data,Data,Data,Data,Data,Data,Data,Data,Data,Data,Data,Data,Data,Data,Data
Data,Data,Data,Data,Data,Data,Data,Data,Data,Data,Data,Data,Data,Data,Data,Data
Data,Data,Data,Data,Data,Data,Data,Data,Data,Data,Data,Data,Data,Data,Data,Data
,,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,,
【问题讨论】:
-
检查
Row当您运行以下形式的语句时您的代码返回了什么:= "T1:T" & Cells(Rows.Count, "T").End(xlUp).Row。完全限定您的 Range 和 Cells 参数,以确保它们引用正确的工作表。