【问题标题】:Google sheets: Get column headers when data is present谷歌表格:当数据存在时获取列标题
【发布时间】:2017-11-17 14:56:22
【问题描述】:

我正在尝试根据表中的过滤器获取列标题,如果数据返回 1。例如:

     ColA ColB ColC  ColD  ColE
Row1           Stat1 Stat2 Stat3
Row2 Bob  Hat  0     0     1
Row3 Bob  Glv  1     1     0

所以如果我有过滤功能:

=FILTER(C2:E3, A2:A="Bob", B2:B="Glv")

我希望返回的 ArrayFormula 为 {Stat1, Stat2}(如果第二个条件是“帽子”,则为 {Stat3})。

谁能指出我正确的方向? 谢谢。

【问题讨论】:

    标签: google-sheets array-formulas


    【解决方案1】:

    使用双重FILTER

    =FILTER(C1:E1,--FILTER(C2:E3, A2:A3="Bob", B2:B3="Glv"))
    

    【讨论】:

    • 稍作修改以删除“--”,效果很好!谢谢!
    • 在这种情况下删除“--”给了我与您列出的相同的输出。
    【解决方案2】:

    我假设您想选择一个列标题,其中相应列中有一个或多个 1,所以想出了

    =query({transpose(query(FILTER(A2:E, A2:A="Bob", B2:B="Glv"),"select sum(Col3),sum(Col4),sum(Col5)")),transpose(C1:E1)},"select Col3 where Col2>0")
    

    【讨论】:

      【解决方案3】:

      将公式用作嵌套在 ArrayFormula 中的 IF 的逻辑表达式,如果值为 false,则使用空参数:

      =ArrayFormula(IF(FILTER(C2:E3, A2:A3="Bob", B2:B3="Hat"),C1:E1,))

      以上将返回 {Stat1,Stat2,}

      要删除结果数组的空成员,请使用 JOIN 和 SPLIT:

      =ArrayFormula(SPLIT(JOIN(",", IF(FILTER(C2:E3, A2:A3="Bob", B2:B3="Hat"), C1:E1,)), ",", FALSE))

      【讨论】:

        猜你喜欢
        • 2023-01-25
        • 2016-08-12
        • 1970-01-01
        • 1970-01-01
        • 2019-07-30
        • 1970-01-01
        • 1970-01-01
        • 2021-04-23
        • 1970-01-01
        相关资源
        最近更新 更多