所以我有一个有 3 张纸的工作簿。 第一个包含来自 A:Z 的数据。 第二个还包含来自 A:Z 的数据,但数据不同。 第三页用于使用筛选器查询另一页。
我希望能够编写一个公式,该公式将过滤工作表 1 中的数据并显示结果,然后从下一个可用行开始,从工作表 2 过滤数据并显示这些结果,没有任何间隙或覆盖。
如果两个过滤器如下所示:
=FILTER(sheet1!A:Z, sheet1!A:A="Bob")
和=FILTER(sheet2!A:Z, sheet2!A:A="Bob")
因此,两个过滤器之间的唯一区别是工作表名称。
我不会提前知道每个过滤器将产生多少行输出,所以我不能只将第二个 Filter 公式放在较低行的单元格中,因为我不希望两组输出之间有任何空白行。
我以为我可以使用 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, )}))
但是我收到公式解析错误。
将它们放在数组中:
={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))