ARRAYFORMULA повторяет результаты ВПР

Я был вынужден изменить формулу в своей электронной таблице и не могу заставить ARRAYFORMULA заполнить столбец без повторения того же результата.

Вот код, который работает в одной строке:

=ArrayFormula(SPLIT(CONCATENATE(QUERY(coreAbilities!$A$2:$E,"SELECT B,C,D,E where A = '"&VLOOKUP(C2:C,unitData!$C$2:$D,2,)&"'",0)&":"),":"))

Я пробовал обернуть его в VLOOKUP, но ничего не помогает.

В основном я ищу в таблице из 5 столбцов и нахожу совпадение с именем, однако имя в этих двух таблицах не совпадает. Имя, которое я ищу, сначала должно быть сопоставлено с его «кодовым именем» в другой таблице, и затем я смогу выполнить поиск в итоговой таблице. Кроме того, каждое имя имеет 3-5 совпадений, каждое с 5 значениями. Так что простое использование VLOOKUP, похоже, не помогает.

Я пробовал VLOOKUP и FILTER в надежде облегчить себе задачу, но единственная формула, которую я могу получить для получения нужных мне результатов (по крайней мере, в правильном порядке), - это использовать QUERY.

Я не замужем за методом, который использую, но он завел меня так далеко, поэтому я просто пытался заставить его пройти.

Вот

person TC76    schedule 03.10.2019    source источник


Ответы (1)


QUERY не поддерживает массивы / диапазоны внутри себя в строковых параметрах.

0

единственный возможный способ - использовать возможности регулярного выражения в QUERY, например:

0

однако TEXTJOIN принадлежит к группе формул, которые ограничены вводом 50000 символов, например. это не сработает с вашими массивными массивами. поэтому двойной VLOOKUP - ваш друг. но, как вы заметили, VLOOKUP всегда может выводить только первый найденный результат, и все следующие находки будут просто клонами / повторами первого совпадения.

0

поэтому хитрость состоит в том, чтобы добавить счетчик к vlooked значению, которое будет вызывать новые находки вместо клонирования предыдущих находок:

0


=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)))

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)))

0

person player0    schedule 03.10.2019
comment
Но это пропускает другие матчи, не так ли? Те, которые, как я предполагал, должны были идти вправо (но в вопросе они не были очень четкими). т.е. поток силы - это только одно из четырех навыков, оставшиеся три должны располагаться справа от столбца K. - person a-burge; 03.10.2019
comment
Я пробовал эту формулу, но кажется, что она дает только первое совпадение для каждого символа (насколько я могу судить, в любом случае [на мобильном телефоне, банкомате]). И похоже, что мобильное приложение продолжает вылетать, поэтому я его пока удалил. Хотя формула не работает полностью, если вы посмотрите на последнюю копию таблицы, на ней будут показаны все совпадения для первого символа. Однако мне может потребоваться добавить еще одну группу для других персонажей. РЕДАКТИРОВАТЬ: приложение, кажется, вылетает независимо ... - person TC76; 03.10.2019
comment
@ a-burge, как я понял вопрос ОП, проблема заключалась в том, что формула массива повторяла каждое следующее найденное совпадение вниз. например. это предлагаемое решение противоречит этому. как вы можете заметить, i251, i252 и т. д. являются навыками следующего уровня для данного игрока, а не первым найденным навыком, который повторяется всякий раз, когда повторяется имя игрока - person player0; 03.10.2019
comment
Да, это масса данных. И теперь я вижу, что делает формула, но не думаю, что это будет окончательное решение. Возможно, мне стоит создать еще один лист и перенести все совпадения coreAbilities в отдельные строки. Наверное, так будет проще. - person TC76; 03.10.2019
comment
@Trey, вы хотите перечислить все навыки для каждого персонажа в строке? это то, что вам нужно? - person player0; 03.10.2019
comment
да. Извините! Кажется, я никогда не могу сформулировать это правильно с первого раза. - person TC76; 03.10.2019
comment
Я знал, что ты это поймешь! Ты лучший! И спасибо за добавленное объяснение того, почему моя первоначальная формула не работает. Это действительно помогает! - person TC76; 03.10.2019