VBA - 自动过滤并将可见数据复制到另一个区域

时间:2015-06-10 15:57:30

标签: vba autofilter

我有一个数据集,我希望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

2 个答案:

答案 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