在谷歌表中弹性使用多个过滤器功能

Anu*_*pam 3 google-sheets

在 Google 电子表格中,我有一个汇总表,我从多个工作表中导入信息。我的过滤器功能之一如下所示:

=Filter(Sheet2!A14:A27, (Sheet2!K14:K27="Y") + (Sheet2!K14:K27="R"))

我有多个像这样的过滤器功能。我面临的问题是我必须为这个函数的结果分配一个静态的行数,但结果是非常动态的(可能是 1 行甚至 15 行)。

我一直在进行详尽的搜索,但找不到一种很好的方法来弹性地执行此操作,以便仅附加所有过滤器函数的结果(每个结果之间可能有一个空行/标题行)。

有人在其中一个论坛上提供的一种解决方案是为每个论坛分配静态行数并使用脚本隐藏空行,这似乎不是一个非常干净的解决方案(但我可能不得不退缩)

另外,我想过使用脚本,但如果我理解正确,脚本只能从菜单、onOpen、onEdit 等“触发”,这也可能不是很直观(必须重新加载电子表格以查看任何更改) onOpen() 等)

使用自定义函数会再次导致相同的问题,因为自定义函数在特定单元格上运行(我们不知道哪个单元格,因为我们正在尝试使其动态化)

很高兴听到任何想法!

小智 5

这是堆叠多列的方法。

{A:A;B:B;C:C}

这是堆叠多个过滤器的方法。

{过滤器1;过滤器2;过滤器3}

以下是如何使用标题堆叠多个过滤器。

{"Header1";Filter1;"Header2";Filter2;"Header3";Filter3}


Spi*_*Pig 1

您应该始终将您处理的单元格/范围传递到自定义函数中,而不是在函数中读取它们。也尽量不要直接写入而是返回结果。这样电子表格就会自动正确更新,并且您不需要任何权限。这是一个例子

function myFilter(values1, values2) {
  return values1.filter(function(v, i) {
    return values2[i][0] === "Y" || values2[i][0] === "R";
  });
}
Run Code Online (Sandbox Code Playgroud)

然后做

={myFilter(Sheet1!A14:A27,Sheet1!K14:K27);A1;myFilter(Sheet2!A14:A27,Sheet2!K14:K27)}
Run Code Online (Sandbox Code Playgroud)

不过还是有点长。但您也可以将中间结果保存在不同的单元格中,然后将结果连接在一起。或者编写一个可以采用任意数量的范围作为参数的过滤函数。您能否举一些更多例子来说明这些过滤器函数的样子。也许有更好的方法来模块化/缩短它。