【问题标题】:How to take only certain columns from a FILTER result?如何从 FILTER 结果中仅获取某些列?
【发布时间】:2014-11-06 09:40:16
【问题描述】:

我正在使用FILTER 从范围中提取行,并且只想获取某些列。例如,我按 D 过滤,但只希望列 B、C 以相反的顺序排列。我尝试使用QUERY

=QUERY(filter(B:D,D:D>=2), "select C,B") - 错误:无法分析函数 QUERY 参数 2 的查询字符串:NO_COLUMNC
=QUERY(filter(B:D,D:D>=2), "select *") - 显示所有列,所以 QUERY 应该可以工作...

我如何QUERYFILTER的结果?还有其他方法可以实现吗?

【问题讨论】:

标签: google-sheets


【解决方案1】:

当您查询一个计算数组时,您需要使用 Colx 表示法而不是列字母:

=QUERY(FILTER(B:D,D:D>=2),"select Col2, Col1")

顺便说一句,只需使用 QUERY 即可实现:

=QUERY(B:D,"select C, B where D >= 2")

或者只是过滤器:

=FILTER({C:C,B:B},D:D>=2)

【讨论】:

  • 对于一张大表,最后两种解决方案中的任何一种是最快的,还是在内部执行相同?
  • @arno 免责声明,我只是一个对表格有点兴趣的最终用户。我相信您的第二部分的答案是否定的,因为 QUERY 似乎将处理转移到 Google Visualization API,其中 FILTER 在 Sheets 引擎中处理。同样,我的意见/从那里的信息中得到的最佳猜测。回答第一部分 - 有趣的是,我认为 QUERY 对大数据集具有更好的性能,我再次猜测这是因为它使用了相同的 API,旨在处理其他上下文中的大数据集。
【解决方案2】:

如何在旅途中使用数组?

=FILTER({B:B, D:D},D:D>=2)

通过这种方式,您可以选择适当的列,并且如果添加新列,它们不会改变。

【讨论】:

  • 缺少 C
【解决方案3】:

虽然使用查询功能简单直接。还有另一种方法可以使用Filter 函数实现此输出

您可以将原始FILTER 函数嵌套在another FILTER 函数中,并指定10 的数组,说明您需要哪一列,不需要哪一列。

=Filter( FILTER(B2:E6,D2:D6>10900) , {1,0,0,1} )

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-21
    • 1970-01-01
    • 2015-10-28
    • 2018-12-22
    • 2021-12-25
    • 1970-01-01
    • 2021-03-22
    • 2011-04-24
    相关资源
    最近更新 更多