Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Range.AutoFilter是否仅使用最后一个条件?VBA_Vba_Autofilter - Fatal编程技术网

Range.AutoFilter是否仅使用最后一个条件?VBA

Range.AutoFilter是否仅使用最后一个条件?VBA,vba,autofilter,Vba,Autofilter,我有一个表,我想移到别处,我想删除一大部分数据(有相当多的空格或0我并不真正关心)。以下是迄今为止我对代码的了解: Dim srcRange As Range Dim copysheet As Worksheet Set copysheet = ActiveSheet Set srcRange = copysheet.range("B1:D1598") srcRange.AutoFilter Field:=3, Criteria1:=Array("#VALUE!", "Count", 0,

我有一个表,我想移到别处,我想删除一大部分数据(有相当多的空格或0我并不真正关心)。以下是迄今为止我对代码的了解:

Dim srcRange As Range
Dim copysheet As Worksheet

Set copysheet = ActiveSheet

Set srcRange = copysheet.range("B1:D1598")
srcRange.AutoFilter Field:=3, Criteria1:=Array("#VALUE!", "Count", 0, Empty)
srcRange.Delete
使用此设置,它只删除空白,因此我使用以下变体对其进行了几次测试:

'this code will return only the 0's
Dim srcRange As Range
Dim copysheet As Worksheet

Set copysheet = ActiveSheet

Set srcRange = copysheet.range("B1:D1598")
srcRange.AutoFilter Field:=3, Criteria1:=Array("#VALUE!", "Count", 0)

'this code will return only the "count"'s
Dim srcRange As Range
Dim copysheet As Worksheet

Set copysheet = ActiveSheet

Set srcRange = copysheet.range("B1:D1598")
srcRange.AutoFilter Field:=3, Criteria1:=Array("#VALUE!", "Count")
因此,我得出的结论是,出于某种原因,自动筛选工具只根据我放入criteria1的最后一个标准进行筛选。有人能告诉我为什么吗

仅供参考-我的临时工作是运行4个筛选/删除命令,而不是一个,它工作正常-我只是想了解一下是什么原因导致了这一点


谢谢

您需要将
运算符:=xlFilterValues
添加到自动筛选调用中:

srcRange.AutoFilter Field:=3, Criteria1:=Array("#VALUE!", "Count"), Operator:=xlFilterValues

这将过滤标准1中提供的所有元素,这个问题非常古老,但我急需帮助。您发布的解决方案引发了运行时错误1004 range类的autofilter方法失败您是否检查了srcRange是否是包含整个表的有效范围?是的,我相信是这样,我尝试使用UsedRange(无论如何,表是工作表的唯一内容)、表左上角单元格的CurrentRegion(
.range(“A5”).CurrentRegion
),手动指定的范围(
.range(“A5”、“E25”)
),并作为最后手段尝试使用
选择