Google 工作表:存在数据时获取列 headers

Google sheets: Get column headers when data is present

我正在尝试根据 table 中的过滤器获取列 headers,如果数据 return 为 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")

我希望 return ArrayFormula 为 {Stat1, Stat2}(如果第二个条件为 "Hat",则为 {Stat3})。

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

使用双 FILTER:

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

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

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

以上将 return {Stat1,Stat2,}

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

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

我假设你想要 select 一列 header,其中相应列中有一个或多个 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")