【问题标题】:Dynamic QUERY range动态查询范围
【发布时间】:2018-10-14 09:15:06
【问题描述】:

我有一个电子表格,在其中一个选项卡中我有一个表格,其中包含来自其他选项卡的计算数据。这是一个有 11 列的小桌子。 Row(1) 是标题行,A 列是项目列表,B 到 J 列是类型。数据仅由数字组成。

在计算数据时,从 B 到 J 的某些列中的时间值可能完全为零。我想用 QUERY 创建这个表的一个子集,但构造一个动态范围,只获取至少有 1 个大于零的值的列。

我知道可以将范围创建为像 {A:A\B:B\D:D} 这样的数组,但在我的情况下,我不知道哪些列的值可以大于零,我不想将列放入值完全为零的范围内。

我已经创建了一个表达式来将此数组值连接为单元格中的文本,但是我不能将它与 QUERY 公式一起使用,无论是使用 INDEX 还是 TEXT 函数。表格是这样的:

项目 TypeA TypeB TypeC TypeD
青铜 0 0 0 0
银 0 0 1 0
黄金 0 0 1 0
钛 1 0 0 0

对于这张表快照,我希望查询范围为 {A:A\B:B\D:D}。但是,随着数据的计算,2小时后或第二天的表格可能是这样的:

项目 TypeA TypeB TypeC TypeD
青铜 1 0 0 1
银 0 0 1 0
黄金 0 1 1 0
钛 1 0 0 0

因此,对于这张表快照,我希望查询范围为 {A:A\B:B\C:C\D:D\E:E}。 p>

这可行吗?以及如何实现或构建动态 QUERY 范围?

谢谢大家...

【问题讨论】:

    标签: google-sheets


    【解决方案1】:

    您可以使用 FILTER 命令根据条件从范围中删除列。

    未过滤

    Items   TypeA   TypeB   TypeC   TypeD   TypeE   TypeF   TypeG
    Bronze  1        0       0       1       0       0        1
    Silver  1        1       0       1       0       0        1
    Gold    1        0       0       1       0       0        1
    Titan   1        0       0       1       1       0        1
    1       4        1       0       4       1       0        4
    

    过滤以删除总数为 0 的列

    Items   TypeA   TypeB   TypeD   TypeE   TypeG       
    Bronze  1       0       1       0       1       
    Silver  1       1       1       0       1       
    Gold    1       0       1       0       1       
    Titan   1       0       1       1       1
    

    “技巧”是将列数据的总和(对于您的示例)求和,然后测试 >0

    过滤器表达式为:

    =FILTER(A1:H5,A6:H6 >0)
    

    解释方式:

    A1:H5是要过滤的范围; A6:H6 >0 选择第 6 行中值 > 0 的所有列

    我在 A6 中放置了一个 1 以确保包含 colA。

    您现在可以对上述表达式返回的范围进行查询。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-20
      • 2012-01-09
      相关资源
      最近更新 更多