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