Объединение INDEX / MATCH с несколькими критериями и несколькими совпадениями - PullRequest
0 голосов
/ 05 сентября 2018

Я использую Excel для отслеживания командной игры, в которой игроки делятся на команды и подгруппы внутри команд. Каждый игрок в подгруппе набирает определенное количество очков, и я хотел бы, чтобы для каждого игрока была представлена ​​сводная строка с количеством очков, набранных другими игроками в том же подгруппе.

Пример:

A         B       C          D
PLAYER    TEAM    SUBTEAM    POINTS
Alice     Red     1          70
Bob       Red     1          20
Charlie   Red     1          10
Dave      Red     2          70
Erin      Red     2          30
Frank     Blue    1          55
Grace     Blue    1          45

Мой желаемый вывод выглядит так:

A         B       C          D        E
PLAYER    TEAM    SUBTEAM    POINTS   SUMMARY
Alice     Red     1          70       Bob:20, Charlie:10
Bob       Red     1          20       Alice:70, Charlie:10
Charlie   Red     1          10       Alice:70, Bob:20
Dave      Red     2          70       Erin:30
Erin      Red     2          30       Dave:70
Frank     Blue    1          55       Grace:45
Grace     Blue    1          45       Frank:55

Самое дальнее, что я смог сделать, это сочетание CONCATENATE, INDEX и MATCH в формуле массива:

{=CONCATENATE(INDEX($A$2:$A$8,MATCH(1,(C2=$C$2:$C$8)*(B2=$B$2:$B$8),0)), ":", INDEX($D$2:$D$8,MATCH(1,(C2=$C$2:$C$8)*(B2=$B$2:$B$8),0)))}

К сожалению, это выводит сводку для первого игрока в подгруппе:

A         B       C          D        E
PLAYER    TEAM    SUBTEAM    POINTS   SUMMARY
Alice     Red     1          70       Alice:70
Bob       Red     1          20       Alice:70
Charlie   Red     1          10       Alice:70
Dave      Red     2          70       Dave:70
Erin      Red     2          30       Dave:70
Frank     Blue    1          55       Grace:45
Grace     Blue    1          45       Grace:45

Что мне нужно сделать сейчас:

  1. Исключая игрока для резюме (я не хочу, чтобы Алиса в резюме для Алисы, но только Боб и Чарли)
  2. Работа с несколькими матчами (в каждой подгруппе может быть произвольное количество игроков)
  3. Получение CONCATENATE для работы с неизвестным количеством строк (потому что, как сказано выше, в каждой подгруппе может быть произвольное количество игроков).

Идеи приветствуются!

Ответы [ 2 ]

0 голосов
/ 05 сентября 2018

К сожалению, Excel (до Excel 2016) не может удобно соединять текст. Лучшее, что вы можете сделать (если вы хотите избежать VBA), это использовать несколько вспомогательных ячеек и разделить это «Сводка» на отдельные ячейки.

См. Пример ниже. Формула массива в ячейке E4 перетаскивается в ячейку J10.

= IFERROR(INDEX($A$4:$D$10,MATCH(SMALL(IF(($B$4:$B$10=$B4)*($C$4:$C$10=$C4)*($A$4:$A$10<>$A4),
  ROW($A$4:$A$10)),E$3),ROW($A$4:$A$10),0),MATCH(E$2,$A$1:$D$1,0)),"")

Обратите внимание, что это формула массива, поэтому вы должны нажать Ctrl + Shift + Введите вместо просто Введите после ввода этого формула.

enter image description here

Конечно, в этом примере я предполагаю 3 игрока. Ваше требование о произвольном количестве игроков не может быть выполнено только с помощью формул, но вы можете просто расширить раздел «Сводка» вправо, насколько это необходимо.

Если вы действительно хотите, вы можете даже объединить строки «Сводка» в одну ячейку, например, что-то вроде:

= CONCATENATE(E4,": ",F4,", ",...)
0 голосов
/ 05 сентября 2018

Я собрал вспомогательный столбец, который объединяет каждого игрока / очки и TEXTJOINIFS из TEXTJOIN для xl2010 / xl2013 с критериями для желаемых результатов.

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...