Excel VBA自动筛选器会继续删除与条件不匹配的数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Excel VBA自动筛选器会继续删除与条件不匹配的数据相关的知识,希望对你有一定的参考价值。

*编辑我用一个新的excel文件尝试了我的代码,它工作了!但当我用我当前的文件尝试它时,同样的事情发生了。 *编辑

我这里有一个代码,它将根据标准“NO”过滤数据。代码将过滤来自sheet5的数据并将它们复制到sheet1。我的问题是,代码将自动删除主表(“表5”)中“NO”以外的条件的数据。我希望主表中的数据保持不变。任何帮助都非常感谢。

Sub searchX()
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Set ws1 = Worksheets("Sheet5") 'master
Set ws2 = Worksheets("Sheet1") 'reminder

With ws1
    .AutoFilterMode = False
    .Range("B3").AutoFilter
    .Range("B3").AutoFilter Field:=17, Criteria1:="NO",
On Error Resume Next  
.AutoFilter.Range.Offset(1).SpecialCells(xlCellTypeVisible).Copy Destination:=ws2.Range("B15")
    .AutoFilterMode = False
End With

MsgBox ("Search done.")
End Sub
答案

我对你的代码进行了更改,我删除了.Range("B3").AutoFilter,它有效,但它可能无法按照你想要的方式工作。

Sub searchX()
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Set ws1 = ThisWorkbook.Worksheets("Sheet5") 'master
Set ws2 = ThisWorkbook.Worksheets("Sheet1") 'reminder

With ws1
    .AutoFilterMode = False
    .Range("B3").AutoFilter Field:=17, Criteria1:="NO"
    On Error Resume Next
    .AutoFilter.Range.Offset(1).SpecialCells(xlCellTypeVisible).Copy Destination:=ws2.Range("B15")
    .AutoFilterMode = False
End With

MsgBox ("Search done.")
End Sub

以上是关于Excel VBA自动筛选器会继续删除与条件不匹配的数据的主要内容,如果未能解决你的问题,请参考以下文章

EXCEL中如何多条件筛选数据?

excel vba中如何获取筛选数据的正确行号

使用 xlFilterValues 恢复自动筛选会引发错误 13 如果 Len(Criteria1(i))>255 类型不匹配?

excel vba 删除行直到条件

excel文件打开时 vba满足条件弹窗提醒?

用VBA筛选日期区间