是否有一个 Excel 函数的功能与 Google Sheets 中的 filter() 相同?

是否有一个 Excel 函数的功能与 Google Sheets 中的 filter() 相同?

我有一个名称列表,每个名称都有一个值 (C:C、D:D)。我想生成一个新列 (A:A),该列仅显示具有我想要的值的名称,不带任何空格。

在 Google 表格中这很简单:

电子表格截图

由于 Sheets 存在一些我无法解决的缺陷,我决定转而使用 Excel,并且不知道如何复制此功能。我最接近的方法是使用 MATCH/INDEX,但我从未能够做到这一点。我所做的所有研究都表明需要 VB,而这正是我想要避免的。

答案1

在 Excel 中,必须在每个需要结果的单元格中输入公式。因此,简而言之,Excel 中没有与 Sheets 中的 Filter 用法完全匹配的函数。

为此,我喜欢将 INDEX 与 AGGREGATE 一起使用:

=IFERROR(INDEX(C:C,AGGREGATE(15,6,ROW($D$1:INDEX(D:D,MATCH("zzz",C:C)))/($D$1:INDEX(D:D,MATCH("zzz",C:C))<>0),ROW(1:1))),"")

将其放入 A1 并复制直至空白。如前所述,必须在每个期望返回的单元格中放置一个函数。

在此处输入图片描述

答案2

只是为了更新这个问题,=FILTER 现在可以与一些其他动态公式一起在 Office 365 版本的 Excel 中使用。Excel 2019 或更早版本不支持此功能,我认为没有任何计划将这些功能添加到这些旧产品中。

答案3

我知道@AutoBaker 提到了这一点,但这里有一个例子,供其他可能需要它的人参考。

所以,是的,对于@JoeFish 的问题,你只需要:

=FILTER(W4:W6,X4:X6<>0, "")

但是,如果您希望转置值,则可以将其与TOCOL()TOROW()函数结合使用。严格来说,这些也会考虑错误并将其从结果中删除:

=TOCOL(FILTER(C:C,D:D<>0,""),3,TRUE)

这实际上将为函数返回的响应生成列值FILTER()

请注意,其他人也发现了这一点,这可以填充相邻的单元格。这对于保持单元格真诚地空的,除非满足某些条件。

相关内容