首页 > 解决方案 > 使两个单独的过滤器函数的输出连续显示的公式

问题描述

所以我有一本有 3 张纸的工作簿。第一个包含来自 A:Z 的数据。第二个也包含来自 A:Z 的数据,但数据不同。第三页用于通过过滤器查询另一页。

我希望能够编写一个公式来过滤表 1 中的数据并显示结果,然后从下一个可用行开始,从表 2 中过滤数据并显示这些结果,没有任何间隙或覆盖。

如果两个过滤器是这样的:

=FILTER(sheet1!A:Z, sheet1!A:A="Bob")=FILTER(sheet2!A:Z, sheet2!A:A="Bob")

因此,两个过滤器之间的唯一区别是工作表名称。

我不会提前知道每个过滤器会产生多少行输出,所以我不能只将第二个过滤器公式放在下一行的单元格中,因为我不希望中间有任何空白行两组输出。

我认为我可以使用 COUNT 或 COUNTA 来计算第一个过滤器公式有多少行输出,但即使知道,我如何选择第二个过滤器将在哪一行开始显示结果?

我曾想过使用 &,但这只是将每个工作表的第一个结果放入一个单元格中,并且没有给出其他行或列结果。我尝试了 ARRAYFORMULA,但我以前从未使用过它,并且认为它不适合。我尝试了 JOIN,但它给出了一个错误,说它只能用于单行或单列。

更新:这是我的新代码,基于 player0 的建议

={IFERROR(FILTER('2019 (H904)'!B9:AK, '2019 (H904)'!C9:C=A1, '2019 (H904)'!J9:J=E1), SUBSTITUTE(COLUMN(B9:AK)^0, 1, ); IFERROR(FILTER('2018 (H517)'!B9:AK, '2018 (H517)'!C9:C=A1, '2018 (H517)'!J9:J=E1), SUBSTITUTE(COLUMN(B9:AK)^0, 1, )}))

但我得到一个公式解析错误。

标签: arraysgoogle-sheetsgoogle-sheets-formulaarray-formulasgoogle-sheets-query

解决方案


将它们放入数组中:

={FILTER(sheet1!A:Z, sheet1!A:A="Bob"); 
  FILTER(sheet2!A:Z, sheet2!A:A="Bob")}

问题是如果其中一个没有输出。那么你需要这样的东西:

=ARRAYFORMULA(QUERY({
 IFERROR(FILTER(sheet1!A:Z, sheet1!A:A="Bob"), SUBSTITUTE(COLUMN(A:Z)^0, 1, ); 
 IFERROR(FILTER(sheet2!A:Z, sheet2!A:A="Bob"), SUBSTITUTE(COLUMN(A:Z)^0, 1, )}, 
 "where Col1 is not null", 0))

推荐阅读