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")

所以我得出的结论是,出于某种原因,自动筛选工具仅根据我放入标准 1 的最后一个标准进行筛选。谁能给我一些关于为什么的见解?

仅供参考-我的临时解决方法是运行 4 个过滤/删除命令而不是一个,它工作正常-我只是想了解一下导致这种情况的原因。

谢谢!

4

1 回答 1

1

您需要添加Operator:=xlFilterValues到您的 AutoFilter 调用:

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

这将过滤 Criteria1 中提供的所有元素

于 2013-02-15T23:27:54.477 回答