【问题标题】:Using multiple filter functions in google sheets elastically弹性使用谷歌表格中的多个过滤器功能
【发布时间】:2015-07-04 15:35:39
【问题描述】:

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

=过滤器(Sheet2!A14:A27, (Sheet2!K14:K27="Y") + (Sheet2!K14:K27="R"))

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

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

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

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

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

很高兴听到任何想法!

【问题讨论】:

  • 您可以只连接几个过滤器操作的结果。例如={Filter(Sheet1!A14:A27, (Sheet1!K14:K27="Y") + (Sheet1!K14:K27="R"));A1;Filter(Sheet2!A14:A27, (Sheet2!K14:K27="Y") + (Sheet2!K14:K27="R"))}。 A1 只是一个用于分隔结果的空单元格。
  • 顺便说一句。自定义函数可以作用于许多单元格并返回许多单元格,就像过滤器一样。
  • 感谢蜘蛛猪!不知道!我正在尝试这个(尽管考虑到所有的连接,它现在变得太长了,但会尝试找到一种模块化的方法)
  • 在您的第二条评论中,当我尝试在自定义函数中使用 copyTo() 来复制单元格的值时,它给了我一个权限错误。然后我在文档中读到自定义函数不能真正用于“写入”到另一个单元格。但也许我可以把整个结果放在一个数组中,然后在那个单元格中输出它,这样它就会自动到达其他单元格(就像过滤器一样)

标签: google-sheets


【解决方案1】:

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

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

然后做

={myFilter(Sheet1!A14:A27,Sheet1!K14:K27);A1;myFilter(Sheet2!A14:A27,Sheet2!K14:K27)}

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

【讨论】:

    【解决方案2】:

    这是堆叠多列的方法。

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

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

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

    这里是如何堆叠多个带有标题的过滤器。

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

    【讨论】:

    • 不适合我。在 1 个公式中尝试多个过滤器
    猜你喜欢
    • 2021-04-29
    • 1970-01-01
    • 1970-01-01
    • 2022-01-04
    • 1970-01-01
    • 1970-01-01
    • 2019-10-19
    • 2021-07-06
    • 1970-01-01
    相关资源
    最近更新 更多