【问题标题】:Google sheets query multiple rows+cols to one cell with lookup table谷歌表格用查找表查询多行+列到一个单元格
【发布时间】:2021-01-08 02:25:11
【问题描述】:

无法弄清楚如何将具有多行和多列的查询结果提取到单个单元格中,并从我的查找表中找到它们的详细信息。非常感谢任何帮助。

试试这个 =数组公式( 询问({ QUERY({A4:A16,TEXTJOIN(",",TRUE,B4:C16)}, "SELECT Col1, Col2, Col3 WHERE Col1 MATCHES 'Core 1|Core 2|Core 3' LABEL Col1 'Core ID', Col2 '完整结果'") }, "选择 Col2 WHERE Col1 = Col1") )

Sheet to help

【问题讨论】:

    标签: google-sheets google-sheets-formula


    【解决方案1】:

    尝试将QueryArrayFormula 混合使用总是令人头疼。他们相处得不好。

    我得出了一个不错的公式,但问题是它依赖于您首先按核心项目对数据进行排序。您可以通过以下方式轻松实现:

    =SORT(A4:C16)
    

    对于这个例子,我把这个公式放在单元格 N4 中。那么你得到的公式是:

    =ArrayFormula(
    {
      "Core ID", "Full Result";
      UNIQUE(FILTER(N4:N,N4:N<>"")),
      SUBSTITUTE(
        TRANSPOSE(
          SPLIT(
            REGEXREPLACE(
              TEXTJOIN(
                ",",
                ,
                UNIQUE(
                  TRANSPOSE(
                    IF(
                      TRANSPOSE(FILTER(N4:N,N4:N<>""))=FILTER(N4:N,N4:N<>""),
                      FILTER(O4:O,O4:O<>"")&
                      " ("&
                        VLOOKUP(FILTER(O3:O,O3:O<>""),A23:B53,2,)&
                      ") - "&
                      FILTER(P4:P,P4:P<>"")&
                      " ("&
                        VLOOKUP(FILTER(P4:P,P4:P<>""),A23:B53,2,)&
                      ")",
                      ";"
                    )
                  )
                )
              ),
              ",(;,)+",
              ";"
            ),";"
          )
        ),
        ",",
        CHAR(10)
      )
    })
    

    它使用了我在UNIQUETRANSPOSEIF 中采用的组连接方法。这可以通过替换N4:N 的所有实例而不使用预先计算的SORT 来解决,但是这样做可以节省计算时间。如果您需要它,您还可以隐藏该列或将其存放在另一张纸中。

    【讨论】:

      【解决方案2】:

      如果您可以分解公式,那么这将是一种可以接受的方法。

      从建立您的查询条件开始。

      =ArrayFormula(
          QUERY({QUERY({A4:A16,ArrayFormula(B4:B16&" ("&VLOOKUP(B4:B16,A23:B53,2,false)&") - 
      ("&VLOOKUP(C4:C16,A23:B53,2,false)&")")}, "SELECT Col1, Col2 WHERE 
      Col1 MATCHES 'Core 1|Core 2|Core 3' LABEL Col1 'Core ID', Col2 'ALL Result'")}, 
      "SELECT Col1, Col2 WHERE Col1 = Col1"))
      
      

      然后在另一列中获取唯一值,最后加入过滤后的值。

      =UNIQUE(E4:E17)
      
      =Join(Char(10),FILTER(F4:F12,E4:E12 = H4))
      

      这样做的缺点是您需要有多个列才能达到您想要的结果,但它很容易遵循。祝你好运!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-09-22
        • 1970-01-01
        • 1970-01-01
        • 2017-05-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多