我在 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
答案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
就会生成一个实际的数组,所有内容,并且可以按照您的意愿进行乘法。
快乐的时光!