Excel筛选器()为空白单元格返回0

Excel筛选器()为空白单元格返回0,excel,filter,worksheet-function,excel-365,Excel,Filter,Worksheet Function,Excel 365,我怀疑以前有人问过这个问题,但我找不到 FILTER()通常会为空行返回0,即使指定了返回字符串 使用filter()我经常得到空单元格的0返回值。假设A列中有6行数据: abc xyz abc xyz abc 如果我使用 FILTER(A10:A15, A10:A15 <> "xyz", "") 这似乎有点不可预测。让0出现在我不想要的地方是一个问题,需要额外的逻辑或过滤。这是一个已知的问题吗?除了显式过滤空白单元格外,还有其他方法解决

我怀疑以前有人问过这个问题,但我找不到

FILTER()
通常会为空行返回0,即使指定了返回字符串

使用
filter()
我经常得到空单元格的0返回值。假设A列中有6行数据:

abc
xyz
abc

xyz
abc
如果我使用

FILTER(A10:A15, A10:A15 <> "xyz", "")
这似乎有点不可预测。让0出现在我不想要的地方是一个问题,需要额外的逻辑或过滤。这是一个已知的问题吗?除了显式过滤空白单元格外,还有其他方法解决此问题吗

这似乎可以避免0返回空单元格:

FILTER(A10:A15, (A10:A15 <> "xyz") * (A10:A15 <> ""), "")
我可以接受这个解决方案,但它应该是不必要的。我还解释了为什么我一遍又一遍地过滤空细胞给人们

顺便说一句,筛选出0不起作用
FILTER()
在读取单元格时似乎将其视为一个空白字符串,但在输出结果时却看不到

FILTER(A10:A15, (A10:A15 <> "xyz") * (A10:A15 <> 0), "")
过滤器(A10:A15,(A10:A15“xyz”)*(A10:A15 0),“”)
这将返回带有0的原始结果

如果没有更好的解决方案,是否有解释?

如前所述,第三个参数(如果为空)不适用于有空白的情况

过滤器(数组,包括,[如果为空])

其中:
数组(必填)-要筛选的值的范围或数组。
包括(必需)-作为布尔数组提供的条件(真值和假值)。 其高度(数据在列中时)或宽度(数据在行中时)必须等于数组参数的高度。
如果为空(可选)-当没有条目满足条件时返回的值

如果数组中的所有值都是“xyz”,则函数将返回
If_empty
中指定的字符串。也就是说,
Include
中的条件对于
数组
范围内的任何非空值都不会计算为真

此外,您的上一个公式似乎不再返回零:

如前所述,第三个参数(如果为空)不适用于存在空白的情况

过滤器(数组,包括,[如果为空])

其中:
数组(必填)-要筛选的值的范围或数组。
包括(必需)-作为布尔数组提供的条件(真值和假值)。 其高度(数据在列中时)或宽度(数据在行中时)必须等于数组参数的高度。
如果为空(可选)-当没有条目满足条件时返回的值

如果数组中的所有值都是“xyz”,则函数将返回
If_empty
中指定的字符串。也就是说,
Include
中的条件对于
数组
范围内的任何非空值都不会计算为真

此外,您的上一个公式似乎不再返回零:

您可以在数组参数前面添加&“”

比如说,

FILTER(A10:A15 &"", (A10:A15 <> "xyz") * (A10:A15 <> ""), "")
过滤器(A10:A15&“”,(A10:A15“xyz”)*(A10:A15“”,“”)
这可以很好地处理文本值,但它会将数字数据转换为文本,在这种情况下,您可以使用VALUE函数将其转换回数字

假设A10:A15是数字数据,则可以使用:

VALUE(FILTER(A10:A15 &"", (A10:A15 > 1000) * (A10:A15 <> ""), ""))
值(过滤器(A10:A15&“”,(A10:A15>1000)*(A10:A15“”,“”)
您可以在数组参数前面添加&“”

比如说,

FILTER(A10:A15 &"", (A10:A15 <> "xyz") * (A10:A15 <> ""), "")
过滤器(A10:A15&“”,(A10:A15“xyz”)*(A10:A15“”,“”)
这可以很好地处理文本值,但它会将数字数据转换为文本,在这种情况下,您可以使用VALUE函数将其转换回数字

假设A10:A15是数字数据,则可以使用:

VALUE(FILTER(A10:A15 &"", (A10:A15 > 1000) * (A10:A15 <> ""), ""))
值(过滤器(A10:A15&“”,(A10:A15>1000)*(A10:A15“”,“”)

我找到了一个不同的通用解决方案:将第一个参数中的空stings替换为单引号,一般来说:

=FILTER(SUBSTITUTE($X:$Z,"","'"),*whatever*,*whatever*)
或者在这个问题上:

=FILTER(SUBSTITUTE($A10:A15,"","'"),A10:A15 <> "xyz", "")
=过滤器(替换($A10:A15,“,””),A10:A15“xyz,”)

我只是简单地利用Excel处理单引号的方式,虽然我没有彻底测试它,但我还没有发现任何缺点。

我找到了一个不同的通用解决方案:将第一个参数中的空stings替换为单引号,如此通用:

=FILTER(SUBSTITUTE($X:$Z,"","'"),*whatever*,*whatever*)
或者在这个问题上:

=FILTER(SUBSTITUTE($A10:A15,"","'"),A10:A15 <> "xyz", "")
=过滤器(替换($A10:A15,“,””),A10:A15“xyz,”)

我只是简单地利用了Excel处理单引号的方式,虽然我没有彻底测试它,但我还没有发现任何缺点。

另一个不太优雅的解决方案是用空格字符替换源数组中的空单元格

我在重新格式化数据时寻找快速答案时发现了此线程。因此,添加空间比其他解决方案更快。我真的很喜欢
VALUE(过滤器(&“,也回答!

另一个不太优雅的解决方案是用空格字符替换源数组中的空单元格

我在重新格式化数据时寻找快速答案时发现了这个线程。因此,添加空间比其他解决方案更快。我真的很喜欢这样
(过滤器(&“”,也请回答!

非常感谢您的解释。我无法了解使用0进行复制筛选时遇到的问题。可能是问题已修复,也可能是我的眼睛无法正常工作。非常感谢您的解释。我无法了解使用0进行复制筛选时遇到的问题。可能是问题已修复,也可能是我的眼睛无法正常工作。似乎是一个非常复杂的问题既然您已经分享了一个非常好的解决方案。非常感谢。既然您已经分享了它,这似乎是一个非常明显的解决方案。非常感谢。