找不到条目时Excel中的筛选函数



我尝试在Excel O365 Pro Plus中使用UNIQUE()FILTER()函数的组合。我在B栏中有一个国家列表,在G栏中有不同项目阶段的列表;1〃;在G列中(我在公式中写A1的原因是因为我在单元格A1中有一个"1"(;1:s";,那么我希望函数返回一个"0";0";或指示";未找到条目";。

当我使用此功能时:

=COUNTA(UNIQUE(FILTER(B:B;G:G=A1;"")))      

当我在列B中至少有一个国家带有";1〃;在列G中;0";当没有符合该标准的国家时;1〃;。我做了一些研究"我在公式末尾写的应该可以解决这个问题,但它不起作用。

谁知道出了什么问题?

我是新来的,所以如果我能把问题写得更清楚的话,请提前道歉。提前非常感谢。

本部分:

=UNIQUE(FILTER(B:B,G:G=A1))

如果您没有任何条目,则显示错误:

#CALC!

因此COUNTA计算所有不为空的单元格。有错误的单元格不是空的,因此您永远不会有0。

试着使用这样的东西:

=SUMPRODUCT(--NOT(ISERR((UNIQUE(FILTER(B:B,G:G=A1))))))

我们正在检查它是否不是错误,只有在这种情况下才会计数。

如果Filter为Empty,则返回值""(因为这是您传递的第三个参数(。然后,您的COUNTA计算出有1个值。

绕过这一点实际上有点困难:无法将数组传递给COUNTA。即使你给它传递了一个错误值,它也只会计算它收到了多少个错误值。

类似地,您不能使用COUNTIF,因为它不适用于Arrays。AGGREGATE不会过滤掉错误,因为数组涉及计算。这就剩下SUMPRODUCT了。当Filter为Empty时,我们将返回一个#NA!错误,而不是返回"",这样我们就可以统计有多少个非错误条目:

=SUMPRODUCT(1-ISERROR(UNIQUE(FILTER(B:B; G:G=A1; NA()))))

您也可以尝试一下。

=IF(IFNA(FILTER(B:B,G:G=A1),0)=0,0,UNIQUE(FILTER(B:B,G:G=A1)))

假设filter函数返回1,即使该值应该是0,我们也可以在执行该函数之前检查#N/A。正如@Imran提到的,当没有找到结果时,函数返回#N/A,,我们可以构建一个处理#N/A的检查,并将其显式转换为0。然后,如果它不是0,我们执行感兴趣的函数,在这种情况下是UNIQUE(FILTER(B:B,G:G=A1))

最新更新