高级筛选器无法识别公式返回的空格

时间:2015-01-03 15:33:27

标签: excel vba

我在Excel中使用高级过滤来快速筛选设置标准。我确定了'标准范围'并记录了一个有效的宏。当我在'条件范围'中没有任何标准的情况下运行宏时,宏返回整个底层数据库,这正是应该发生的事情。

但是,当我在'条件范围'中插入公式时,如果设置条件为空,则返回空格,宏不会将单元格识别为空白,即它不返回任何内容。

我的问题是:如何让Excel将单元格识别为空白,从而通过插入“条件范围”中的公式返回总基础数据集?

录制的宏:

Sub Filter()

    Sheet2.Range("A1").CurrentRegion.AdvancedFilter _
        Action:=xlFilterCopy, CriteriaRange:=Range("Interface!Criteria"), _
        CopyToRange:=Range("Interface!Extract"), Unique:=False
    ActiveWindow.ScrollColumn = 1
End Sub

插入'条件范围'的公式:

=IF(ISBLANK(D4),"","<="&D4)

提前致谢,

Hieronymus5

2 个答案:

答案 0 :(得分:0)

看来你是对的,公式结果不起作用

也许在vba中检查D4并写入空白值,而不是使用公式 If = Range(&#34; Interface!Criteria&#34;)是范围E1:E2

  If Range("D4") = "" Then Range("E2") = "" Else Range("E2") = "<=" & Range("D4")` 

&#39;然后是您的过滤器

答案 1 :(得分:0)

首先,感谢所有人试图帮助我解决这个问题。

话虽如此,对我而言,解决方案实际上非常简单。我希望条件范围为空的主要原因是强制高级过滤器返回基础数据集中的所有数据。

但是,条件范围不需要为空,以便过滤器返回所有数据,还可以强制Excel返回除特定值以外的所有值

如果您选择此特定值为基础数据集中的任何位置,那么它将返回完整数据。

所以在我的情况下,我将=IF(ISBLANK(D4),"","<="&D4)替换为=IF(ISBLANK(D4),"<>TEST","<="&D4)。具有“&lt;&gt; TEST”的后一个公式返回不等于TEST 的所有数据。 TEST是我的数据集中不存在的值。

我没有尝试过datatoo提供的解决方案。