2015-01-03 60 views
2

我使用的是先进的过滤在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

+0

D4实际上是什么?有没有公​​式或手动编辑的值?如果有一个公式它实际上不是一个空白单元格 – datatoo

+0

您好datatoo! D4实际上是空白的。但是,经过一些实验后,我发现问题是由'= IF(ISBLANK(D4),“”,“<=”&D4)'引起的。它不是'D4',而是包含'= IF(ISBLANK(D4),“”,“<=”&D4)'的单元格,这是有问题的,因为Excel确实认为这个单元格是空白的(即使函数返回“”)。所以这个问题归结为:是否有一种方法可以将另一个操作符替换为“”,以便Excel可以将单元识别为空? – Hieronymus5

+0

也许= IF(D4 =“”,“”,“<=”&D4)将为你工作 – datatoo

回答

0

看样子你是正确的,公式结果不起作用

或许检查D4在VBA和写入空值,而不是使用一个公式 如果=范围( “接口标准!”)为范围E1:E2

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

“,那么你的过滤器

0

首先非常感谢大家试图帮助我解决这个问题。

话虽如此,对我来说,解决办法是其实很简单。我想让标准范围为空的主要原因是强制高级过滤器返回底层数据集中的所有数据。

然而,标准范围不需要是空白的过滤器返回的所有数据,人们也可以强制Excel返回所有值除了特定值

如果你选择了这个特定的值是一些乱码,这不是任何地方在你的基础数据集,它将返回完整的数据。

所以在我的情况下,我通过=IF(ISBLANK(D4),"<>TEST","<="&D4)取代=IF(ISBLANK(D4),"","<="&D4)。具有“<> TEST”的后一个公式返回不等于TEST的所有数据。 TEST是一个在我的数据集中不存在的值。

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

+0

是非常好的祝贺 – datatoo