Google sheets Google sheets查询多行+;使用查找表将cols转换为一个单元格

Google sheets Google sheets查询多行+;使用查找表将cols转换为一个单元格,google-sheets,google-sheets-formula,Google Sheets,Google Sheets Formula,无法确定如何将具有多个行和列的查询结果拉入单个单元格,并从我的查找表中查找其详细信息。非常感谢您的帮助 试试这个 =阵列公式( 质疑({ 查询({A4:A16,TEXTJOIN(“,”,TRUE,B4:C16)},“选择Col1,Col2,Col3,其中Col1匹配'core1 | core2 | core3'标签Col1'核心ID',Col2'完整结果') },“选择Col2,其中Col1=Col1”) ) 试图将查询与数组公式混合在一起总是让人头疼。他们相处不好 我得出了一个很好的公式,但关

无法确定如何将具有多个行和列的查询结果拉入单个单元格,并从我的查找表中查找其详细信息。非常感谢您的帮助

试试这个 =阵列公式( 质疑({ 查询({A4:A16,TEXTJOIN(“,”,TRUE,B4:C16)},“选择Col1,Col2,Col3,其中Col1匹配'core1 | core2 | core3'标签Col1'核心ID',Col2'完整结果') },“选择Col2,其中Col1=Col1”) )


试图将
查询
数组公式
混合在一起总是让人头疼。他们相处不好

我得出了一个很好的公式,但关键是它依赖于您首先按核心项对数据进行排序。您可以通过以下方式轻松实现这一点:

=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)
  )
})
=数组公式(
{
“核心ID”、“完整结果”;
唯一(筛选器(N4:N,N4:N“”),
替代品(
转置(
分裂(
REGEXREPLACE(
文本连接(
",",
,
独特的(
转置(
如果(
转置(FILTER(N4:N,N4:N“”)=FILTER(N4:N,N4:N“”),
过滤器(O4:O,O4:O“”)&
" ("&
VLOOKUP(过滤器(O3:O,O3:O“”),A23:B53,2,)&
") - "&
过滤器(P4:P,P4:P“”)&
" ("&
VLOOKUP(过滤器(P4:P,P4:P“”),A23:B53,2,)&
")",
";"
)
)
)
),
",(;,)+",
";"
),";"
)
),
",",
字符(10)
)
})

它使用了我为类似这样的东西所采用的组连接方法,
UNIQUE
TRANSPOSE
IF
。通过替换
N4:N
的所有实例,不必使用预先计算的
排序
就可以解决此问题,但这样做可以节省计算时间。如果您需要它,您也可以隐藏该列或将其存放在另一张纸中。

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

首先构建查询条件

=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))
这样做的缺点是,您需要有多个列来实现所需的结果,但这很容易做到。祝你好运