查询 sheet 和 return 列 Headers 连续匹配两个条件

Query sheet and return Column Headers that match two criteria in a row

我正在尝试 return 基于 TRUE 值和项目名称的列数组 headers。

Link to sheet <- Clicky

Sheet 2:

Sheet 1:(期望的结果)

我想我已经很接近了,但我无法绞尽脑汁在相应的项目中搜索两个 TRUE 值,并为每个 return headers 搜索。我尝试了以下方法,但 return 什么都没有。据我所知。

=IFERROR(QUERY(QUERY(Sheet2!A1:D,"Select * where G='"&A1&"'",1),"Select Col1 where Col2 is not null"))

使用:

=INDEX(IFERROR(SUBSTITUTE(SPLIT(TRIM(FLATTEN(QUERY(TRANSPOSE(
 IF(Sheet2!A2:D=TRUE, SUBSTITUTE(Sheet2!A1:D1, " ", "♦"), )),,9^9))), " "), "♦", " "))

更新:

=INDEX(IFNA(VLOOKUP(A1:A, {Sheet2!G2:G, 
 IFERROR(SUBSTITUTE(SPLIT(TRIM(FLATTEN(QUERY(TRANSPOSE(
 IF(Sheet2!A2:D=TRUE, SUBSTITUTE(Sheet2!A1:D1, " ", "♦"), )),,9^9))), " "), "♦", " "))}, 
 {2,3,4,5}, 0)))

如果有人对另一种方式感兴趣,我确实找到了一种解决方案,该方法使用我更了解的最小函数的首选方法,我只是缺少转置函数。

=TRANSPOSE(QUERY(TRANSPOSE(QUERY(Sheet2!$A:$G,"Select * where G = '"&$A1&"'",1)),"Select Col1 where Col2 = TRUE"))

唯一不幸的是我似乎无法让它向下扩展,但它会 return 在一个单元格中水平显示结果。它也快得多。

要在一行中获得以逗号分隔的结果,您可以使用 JOIN:

=JOIN(", ",TRANSPOSE(QUERY(TRANSPOSE(QUERY(Sheet2!$A:$G,"Select * where G = '"&$A1&"'",1)),"Select Col1 where Col2 = TRUE")))