仅当非空白时才使用多个条件的 FILTER 公式

仅当非空白时才使用多个条件的 FILTER 公式

我在 Excel 表中有一个名为“数据”的数据集。

在另一张表中,我有两行,标题为“数据”。如下所示:

      A    B
1   id: 
2 name:

其理念是,用户在 B1 和 B2 上输入要搜索的条件,然后在其下方使用 FILTER 公式,Excel 显示结果。

我正在使用类似这样的方法来实现一个标准:

=FILTER(data, (data[id]=B1), “No records found”)

对于多个条件,我使用这个:

=FILTER(data, (IF(ISBLANK(B1), "", (data[id]=B1)))*(IF(ISBLANK(B2), "", (data[name]=B2))), "No records found")

它们都可以工作,但是,如果我使用多个条件公式,并且 B1 或 B2 为空,则 FILTER 公式会出现#VALUE!,而不是仅显示满足 B1 或 B2 的信息。

基本上,这个想法是使用 FILTER 公式并根据用户选择搜索的列(id 或名称)或两者来显示数据。

答案1

当单元格 B1 和 B2 都不为空且匹配时,您使用的多条件公式将显示相应的数据。
但请考虑 B1 和 B2 的条件来自不同的系列。我建议您使用两个 FILTER 公式来实现这一点。在单元格 F1 和 F2 中:

=IF(ISBLANK(E1),"",FILTER(data,data[id]=E1,"No records found"))
=IF(ISBLANK(E2),"",FILTER(data,data[name]=E2,"No records found"))

在此处输入图片描述

答案2

此处的困难在于,您要构建两个TRUE/FALSE值数组,然后将这两个数组相乘。 思路是,如果 ID 和 Name 都匹配,则相乘时数组中相应的位置将为 1,输出结果为 1,从而在数据表中获取相应的匹配行。

当 B1 或 B2 中有空白时,此方法不起作用,因为当发生这两种情况时,其公式部分不会产生TRUE/FALSE值数组。相反,它会产生一个“常量”作为其输出,即“”或空单元格值。

因此,只要其中一个为空,乘法就会失败。

您可以通过将公式中的两个“”位分别替换为以下内容来解决这个问题FALSE

=FILTER(Data, (IF(ISBLANK(B1), FALSE, (Data[ID]=B1)))*(IF(ISBLANK(B2), FALSE, (Data[Name]=B2))), "No records found")

这样,FALSE就会生成一个实际的数组,所有内容,并且可以按照您的意愿进行乘法。

快乐的时光!

相关内容