【问题标题】:How to specify multiple ranges in excel filter formula如何在excel过滤器公式中指定多个范围
【发布时间】:2020-08-27 20:48:44
【问题描述】:

我希望能够使用 Excel 的过滤公式并仅获得特定的列作为结果。

例如,我尝试了以下公式,但失败了。

=FILTER((A:B,D:D),A:A=3475,"")

我怎样才能让它工作?我想得到过滤后的结果,其中 A 列中的任何值都等于 3475,并且只得到 A、B 和 D 列

【问题讨论】:

  • 那么你必须写两个公式。一种是获取 A 列和 B 列。另一种是 D 列。
  • 为什么不想要的栏目打扰到你?
  • 你想要怎样的结果? A、B 和 D 的串联?还是三个单独的列?
  • @Variatus 因为我使用过滤结果创建导出文件到另一个平台,并且只需要特定的列。
  • @BigBen 3 个单独的列

标签: excel excel-formula


【解决方案1】:

您可以使用一个单一的公式,例如:

=TRANSPOSE(CHOOSE({1,2,3},FILTER(A:A,A:A=3475),TRANSPOSE(FILTER(B:B,A:A=3475)),TRANSPOSE(FILTER(D:D,A1:A4=3475))))

但考虑到性能,我会使用 cmets 中提出的两个单独的公式。

【讨论】:

  • 谢谢。这以错误的方式转置了列并且出现了错误,因为当它们垂直转置时结果混淆了。我去掉了所有的TRANSPOSE,当写成=CHOOSE({1,2,3},FILTER(A:A,A:A=3475),FILTER(B:B,A:A=3475),FILTER(D:D,A1:A4=3475))时,公式工作得很好
【解决方案2】:

您需要为过滤函数的数组参数使用正确的数组。

我使用了一个表格,因为使用整列引用效率低。

例如,如果您只想返回表的第 1,2 和 4 列,您可以使用:

=INDEX(Table1,SEQUENCE(ROWS(Table1)),{1,2,4})

所以你的过滤功能可能是:

=FILTER(INDEX(Table1,SEQUENCE(ROWS(Table1)),{1,2,4}),Table1[colA] = myVar)

如果由于某种原因您不想使用 表格,则以下公式也应该有效:

=FILTER(INDEX($A:$D,SEQUENCE(LOOKUP(2,1/(LEN($A:$A)>0),ROW($A:$A))),{1,2,4}),myVar=INDEX($A:$A,SEQUENCE(LOOKUP(2,1/(LEN($A:$A)>0),ROW($A:$A)))))

效率越低:

=FILTER(INDEX($A:$D,SEQUENCE(ROWS($A:$A)),{1,2,4}),myVar=$A:$A)

【讨论】:

  • 谢谢。我不会使用桌子,所以我尝试了最后一张=FILTER(INDEX($A:$D,SEQUENCE(ROWS($A:$A)),{1,2,4}),myVar=$A:$A)。我收到一个错误#NAME? 不知道为什么。我使用了 JvdV 答案的变体,因为它更简单
  • @West 在您使用的公式中,您可能没有定义myVar
猜你喜欢
  • 2018-09-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-13
相关资源
最近更新 更多