【问题标题】:Query sheet and return Column Headers that match two criteria in a row查询工作表并返回连续匹配两个条件的列标题
【发布时间】:2022-01-12 21:12:47
【问题描述】:

我正在尝试根据 TRUE 值和项目名称返回列标题数组。

Link to sheet

表 2:

工作表 1:(所需结果)

我想我已经很接近了,但无法绞尽脑汁在相应的项目中搜索两个 TRUE 值并返回每个值的标题。我尝试了以下方法,但它什么也没返回。据我所知。

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

【问题讨论】:

    标签: google-sheets split google-sheets-formula flatten google-query-language


    【解决方案1】:

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

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

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

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

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

    【讨论】:

      【解决方案2】:

      使用:

      =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)))
      

      【讨论】:

      • 虽然我希望我的查询方法是接近的,因为我可以更容易地理解它,这是完美的。谢谢!
      • 哦,抱歉,我刚刚意识到它没有考虑 A 列列表,我需要它取决于 A 列所说的内容并匹配该字符串项。我发帖时没有考虑这个细节,因为我的思维过程和试验公式已经在那个思维空间里了。
      • @KevinP。答案已更新
      猜你喜欢
      • 2013-02-18
      • 1970-01-01
      • 1970-01-01
      • 2019-02-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多