我有一个数据集,我希望VBA进行自动过滤,而在B列中,只需取消选择0并保留所有其他值。
然后将可见单元格复制到新工作表。有人可以帮我解决错误吗
由于
Sub findlastrowwithvaluefilter()
ActiveWorkbook.Sheets("CASCADE -Offshore Upload Format").Activate
LastRow = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row
With Range("A1:Q" & LastRow)
.AutoFilter
.AutoFilter Field:=2, Criteria1:="Select All", Operator:=xlAnd, Criteria1:="<>0"
End With
Range("A2:Q" & LastRow).Select
ActiveSheet.Range("A1:Q1" & LastRow).Offset(1, 0).SpecialCells(xlCellTypeVisible).Copy
Sheets("Sheet1").Select
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
MsgBox (LastRow)
End Sub
答案 0 :(得分:1)
替换
.AutoFilter Field:=2, Criteria1:="Select All", Operator:=xlAnd, Criteria1:="<>0"
与
.AutoFilter Field:=2, Criteria1:="<>0", Operator:=xlAnd
并且应该工作
答案 1 :(得分:0)
这是一个非常小的语法问题。下面是工作代码。
编写标准以便过滤掉零的方法是
标准1:的 = 强> “&LT;大于0”。 =符号应该在括号之外。
Sub findlastrowwithvaluefilter()
ActiveWorkbook.Sheets("CASCADE -Offshore Upload Format").Activate
LastRow = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row
With Range("A1:Q" & LastRow)
.AutoFilter
.AutoFilter Field:=2, Criteria1:="<>0", Operator:=xlAnd
End With
Range("A2:Q" & LastRow).Select
ActiveSheet.Range("A1:Q1" & LastRow).Offset(1, 0).SpecialCells(xlCellTypeVisible).Copy
Sheets("Sheet1").Select
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
MsgBox (LastRow)
End Sub