首页 > 解决方案 > Filter() 就地不重复公式

问题描述

考虑一个非常基本的表格:

List 1 | List 2
a|a
b|c
c|

现在我想生成这些列表的交集的数组,即 {a,c}。

如果我这样做:

=INDEX(Table1[List2],XMATCH(Table1[List1],Table1[List2]))

我得到:

a
#N/A
c

现在,为了摆脱#N/A,我发现这样做的唯一方法是基本上重复等式,如下所示:

=FILTER(INDEX(Table1[List2],XMATCH(Table1[List1],Table1[List2])),NOT(ISNA(INDEX(Table1[List2],XMATCH(Table1[List1],Table1[List2])))))

这可行,但非常不理想,因为保持方程的两个版本同步的概率非常低。

有一个更好的方法吗?

标签: excelexcel-formula

解决方案


一个可以LET用来避免重复:

=LET(x,INDEX(Table1[List2],XMATCH(Table1[List1],Table1[List2])),FILTER(x,NOT(ISNA(x))))

然而,这可能更简单:

=FILTER(Table1[List1],ISNUMBER(XMATCH(Table1[List1],Table1[List2])))

推荐阅读