【发布时间】:2016-07-01 21:23:27
【问题描述】:
在 VBA 中,我记录了下面的代码,其中 Col E = "Currency" & Col B = "Policy"..
它应该做的是..
- 列标题“货币”和“政策”都在不断变化,因此应通过名称自动找到它们。..
- Col Currency 应过滤为“USD”,Col 策略应过滤为“Willis PCard”,而不是将过滤结果复制到命名为“P Card -”的新工作表中
- Col Currency 应过滤为“USD”,Col 政策应过滤为“Willis”和“Willis Re”,两者都应复制到命名为“US -”的新工作表中
`
Sub Filter()
'
' Filter Macro
'
'
Rows("1:1").Select
Selection.AutoFilter
ActiveSheet.Range("$A$1:$R$337").AutoFilter Field:=5, Criteria1:="USD"
ActiveSheet.Range("$A$1:$R$337").AutoFilter Field:=2, Criteria1:= _
"Willis PCard"
Cells.Select
Selection.Copy
Sheets.Add After:=Sheets(Sheets.Count)
Sheets("Sheet1").Name = "P Card - "
ActiveSheet.Paste
Sheets("ProcessorReportsList").Select
Application.CutCopyMode = False
ActiveSheet.Range("$A$1:$R$337").AutoFilter Field:=2, Criteria1:="=Willis" _
, Operator:=xlOr, Criteria2:="=Willis RE"
ActiveSheet.Range("$A$1:$R$337").AutoFilter Field:=18, Criteria1:="<>"
Cells.Select
Selection.Copy
ActiveWindow.SmallScroll ToRight:=1
Sheets.Add After:=Sheets(Sheets.Count)
Sheets("Sheet2").Select
Sheets("Sheet2").Name = "US on Hold - "
ActiveSheet.Paste
Sheets("ProcessorReportsList").Select
Application.CutCopyMode = False
ActiveSheet.Range("$A$1:$R$337").AutoFilter Field:=18, Criteria1:="="
Cells.Select
Selection.Copy
Sheets.Add After:=Sheets(Sheets.Count)
Sheets("Sheet3").Select
Sheets("Sheet3").Name = "US - "
ActiveSheet.Paste
Cells.Select
Cells.EntireColumn.AutoFit
Sheets("US on Hold - ").Select
Cells.Select
Cells.EntireColumn.AutoFit
Sheets("P Card - ").Select
Cells.Select
Cells.EntireColumn.AutoFit
Range("A1").Select
Sheets("ProcessorReportsList").Select
Cells.Select
Cells.EntireColumn.AutoFit
Application.CutCopyMode = False
Selection.AutoFilter
End Sub
但是,result 似乎出乎意料
任何帮助将不胜感激。
【问题讨论】:
-
既然你已经记录了整个工作步骤,我打算在黑暗中试一试,说你是 VBA 新手?如果是这样,我确实建议您查看一些 VBA 指南/课程 [homeandlearn.org/] 是一个很好的起点,在此站点上代码审查也会很好,因为它适用于已经有效但您想要改进它的代码(注意- 仅适用于工作代码使用代码审查),随着您的改进,我认为您将帮助本网站和其他网站上的其他人!