无法弄清楚如何将具有多行和多列的查询结果拉入单个单元格并从我的查找表中找到其详细信息。任何帮助将不胜感激。
尝试一下 = ArrayFormula( 查询({ QUERY({A4:A16,TEXTJOIN(“,”,TRUE,B4:C16)},“ SELECT Col1,Col2,Col3在哪里Col1匹配'Core 1 | Core 2 | Core 3'LABEL Col1'Core ID',Col2'完整结果'“) },“ SELECT Col2 WHERE Col1 = Col1”) )
答案 0 :(得分:1)
尝试将Query
与ArrayFormula
混合总是令人头疼。他们在一起不好。
我得出了一个很好的公式,但是要注意的是,它取决于您首先按“核心项目”对数据进行排序。您可以使用以下方法轻松实现此目标:
=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)
)
})
它使用诸如UNIQUE
,TRANSPOSE
和IF
这样的东西使用的Group Concatenate方法。无需使用预先计算的SORT
来代替N4:N
的所有实例,就可以解决此问题,但是这样做可以节省计算时间。如果您需要它,也可以隐藏该列或将其存放在另一张纸中。
答案 1 :(得分:0)
如果您可以分解公式,那么这是可以接受的方法。
首先建立查询条件。
=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))
不利的一面是您需要具有多个列才能实现所需的结果,但是易于遵循。祝你好运!