QUERY
не не поддерживает массивы / диапазоны внутри себя под строковыми параметрами.
единственный возможный способ - использовать возможности регулярных выражений в QUERY
, например:
, однако TEXTJOIN
относится к группе формул, которые ограничены вводом 50000 символов, например. это не будет работать с вашими массивами. поэтому double VLOOKUP
ваш друг. но, как вы заметили, VLOOKUP
может всегда выводить только первый найденный результат, и каждая следующая находка будет просто клоном / повтором первого совпадения.
, так что хитрость заключается в добавлении счетчика к значению просматриваемого вверх, которое заставит новые находки вместо клонирования предыдущих находок:
=ARRAYFORMULA(IFERROR(VLOOKUP(COUNTIFS(IFERROR(VLOOKUP(C2:C, unitData!$C$2:$D, 2, 0)),
IFERROR(VLOOKUP(C2:C, unitData!$C$2:$D, 2, 0)), ROW(M2:M), "<="&ROW(M2:M))&
IFERROR(VLOOKUP(C2:C, unitData!$C$2:$D, 2, 0)),
{COUNTIFS(coreAbilities!A2:A, coreAbilities!A2:A, ROW(coreAbilities!A2:A), "<="&
ROW(coreAbilities!A2:A))&coreAbilities!A2:A, coreAbilities!B2:E}, {2,3,4,5}, 0)))
ОБНОВЛЕНИЕ:
=ARRAYFORMULA(TRANSPOSE(QUERY(TRANSPOSE(IFERROR(SPLIT(IFERROR(VLOOKUP(
IFERROR(VLOOKUP(C2:C, unitData!$C$2:$D, 2, 0)),
SPLIT(TRANSPOSE(QUERY(TRANSPOSE(QUERY(QUERY({coreAbilities!A2:A&"♦",
"♠"&coreAbilities!B2:B&"♠"&coreAbilities!C2:C&"♠"&coreAbilities!D2:D&"♠"&coreAbilities!E2:E,
coreAbilities!C2:C}, "select Col1,max(Col2) group by Col1 pivot Col3", 0),
"offset 1", 0)),,999^99)), "♦"), 2, 0)), "♠"))), "offset 1", 0)))