Dav*_*son 3 excel filter worksheet-function is-empty excel-365
我怀疑以前有人问过这个问题,但我找不到。
FILTER()即使指定了返回字符串,通常也会为空白行返回 0。
使用时filter()我经常得到空单元格的 0 返回值。假设 A 列中有 6 行数据:
abc
xyz
abc
xyz
abc
Run Code Online (Sandbox Code Playgroud)
如果我使用
FILTER(A10:A15, A10:A15 <> "xyz", "")
Run Code Online (Sandbox Code Playgroud)
我得到以下信息(有时):
abc
abc
0
abc
Run Code Online (Sandbox Code Playgroud)
这似乎有些难以预料。在我不想要的地方出现 0 是一个问题,需要额外的逻辑或过滤。这是一个已知的问题?除了明确过滤掉空白单元格之外,还有其他方法可以解决这个问题吗?
这似乎可以消除空单元格返回 0 的情况:
FILTER(A10:A15, (A10:A15 <> "xyz") * (A10:A15 <> ""), "")
Run Code Online (Sandbox Code Playgroud)
返回的是:
abc
abc
abc
Run Code Online (Sandbox Code Playgroud)
我可以接受这个解决方案,但它应该是不必要的。我最后还向人们解释了为什么我一遍又一遍地过滤空单元格。
顺便说一句,过滤掉 0 不起作用。FILTER()在读取单元格时似乎将单元格视为空白字符串,但在输出结果时则不然。
FILTER(A10:A15, (A10:A15 <> "xyz") * (A10:A15 <> 0), "")
Run Code Online (Sandbox Code Playgroud)
这将返回带有 0 的原始结果。
如果没有更好的解决办法,有解释吗?
小智 7
您可以在数组参数前面添加 &""。
例如,
FILTER(A10:A15 &"", (A10:A15 <> "xyz") * (A10:A15 <> ""), "")
Run Code Online (Sandbox Code Playgroud)
这对于文本值可以很好地工作,但它会将您的数字数据转换为文本,在这种情况下,您可以使用 VALUE 函数将其转换回数字。
假设如果 A10:A15 是数值数据,您可以使用:
VALUE(FILTER(A10:A15 &"", (A10:A15 > 1000) * (A10:A15 <> ""), ""))
Run Code Online (Sandbox Code Playgroud)
小智 6
当您的范围包含混合数据时,此处提到的其他解决方案将无法正常工作。该解决方案适用于所有文本数据或所有数字数据。但这些不适用于混合数据,正如您在下面的比较中看到的那样。
\n这适用于混合数据:
\n=FILTER( IF(A10:A15="", "", A10:A15), A10:A15<>"xyz")。
\n注 1:橙色字段是不正确/不需要的,绿色字段是正确的。
\n注 2:“Waarde”是荷兰语“价值”(错误)的意思。
\n=FILTER(I3:K6; I3:I6 <> "")FILTER(... & "")过滤器\xe2\x80\x94=FILTER(I3:K6 & ""; I3:I6 <> "")VALUE(...)过滤器\xe2\x80\x94=VALUE(FILTER(I3:K6; I3:I6 <> ""))VALUE(FILTER(... & ""))过滤器\xe2\x80\x94=VALUE(FILTER(I3:K6 & ""; I3:I6 <> ""))=FILTER(IF(I3:K6 = ""; ""; I3:K6); I3:I6 <> "")如果范围内的单元格为空,则它将是空字符串 ( ""),否则它将使用原始值。这样,只有特定的单元格才会被替换为文本空单元格,而数字单元格则按原样保留,以便 Excel 自动解释为数字或其他数据。
| 归档时间: |
|
| 查看次数: |
24474 次 |
| 最近记录: |