【问题标题】:Advanced Filter does not recognize blanks returned by a formula高级筛选器无法识别公式返回的空白
【发布时间】:2015-01-05 18:01:28
【问题描述】:

我在 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

【问题讨论】:

  • D4 中到底有什么?是否有公式或手动编辑的值?如果有公式,它实际上不是空白单元格
  • 你好,datatoo! D4 实际上是空白的。但是,经过一些实验,我发现问题是由'=IF(ISBLANK(D4),"","D4,不如说是包含 '=IF(ISBLANK(D4),"","
  • 也许 =IF(D4="","","
  • 不,这与 ISBLANK(D4) 基本相同。由于单元格包含=IF(ISBLANK(D4),"","&lt;="&amp;D4),问题实际上是 Excel 无法识别标准范围为空白,而不是实际为空白。不过感谢您的努力!
  • 公式结果不同isblank版本返回

标签: excel vba


【解决方案1】:

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

也许在vba中检查D4并写一个空白值,而不是使用公式 如果 =Range("Interface!Criteria") 是 Range E1:E2

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

'然后是你的过滤器

【讨论】:

    【解决方案2】:

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

    话虽如此,但对我来说,解决方案实际上很简单。我想让条件范围空白的主要原因是强制高级过滤器返回基础数据集中的所有数据。

    但是,条件范围不需要为空白,过滤器返回所有数据,也可以强制 Excel 返回所有值除了特定值 .

    如果您选择此特定值作为基础数据集中任何地方都不存在的乱码,它将返回完整数据。

    所以就我而言,我将=IF(ISBLANK(D4),"","&lt;="&amp;D4) 替换为=IF(ISBLANK(D4),"&lt;&gt;TEST","&lt;="&amp;D4)。后一个带有“TEST”的公式返回所有不等于TEST的数据。 TEST 是我的数据集中任何地方都不存在的值。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多