Как сгруппировать строки в QUERY

Часто попадается задача сгруппировать строки по какому-то признаку. Например, у нас есть список сотрудников и подразделений. Нужно получить для каждого подразделения список пользователей через запятую.

Основное решение

Например, в колонке A:B данные. A:A - подразделения, B:B - сотрудники.

Интересно посмотреть на результат вывода формулы

=ARRAYFORMULA(IF(A3:A=TRANSPOSE(UNIQUE(A3:A));B3:B;))

Она выведет списки пользователей по колонкам.

Далее, нужно все свести в одну ячейку

=ARRAYFORMULA(QUERY(IF(A3:A=TRANSPOSE(UNIQUE(A3:A));B3:B&", ";"");;9^9))

, чтобы получить перечисленных через запятую пользователей

Финальная формула, которая просто "поворачивает" результат и "прикрепляет" слева список групп

=ARRAYFORMULA({UNIQUE(A3:A)\TRIM(
  REGEXREPLACE(
    TRANSPOSE(QUERY(IF(A3:A=TRANSPOSE(UNIQUE(A3:A));B3:B&", ";"");;9^9));
    "(^\s+|\s*,\s*$)";
    ""
  )
)})

Таблица с полными примерами QUERY. Группировка строк

Комментарии

Не нашли ответ? Пишите!

Имя

Электронная почта *

Сообщение *