Позвольте мне добавить два дополнительных метода к ответу @ Harun24HR. Обе опции предполагают, что согласно вашим образцам данных у вас нет заголовков.
Опция 1) : Dynami c Функции массива
Когда у вас есть доступ для динамических c функций массива вы можете использовать следующее:
In C1
:
=UNIQUE(A1:A17)
Эта UNIQUE
функция будет разлив массив уникальных значений из определенного диапазона в столбец C.
In D1
:
=TEXTJOIN(",",TRUE,FILTER(B$1:B$17,A$1:A$17=C1))
, тогда как FILTER
извлечет все значения из столбца B, где совпадает столбец A, это TEXTJOIN
, который объединит эти значения в желаемую строку.
Перетащите вниз ...
Вариант 2) : PowerQuery
Если вы хотите поэкспериментировать с PowerQuery / GetAndTransform , тогда вам не нужны никакие формулы или VBA
для этого дело. Выполните следующие действия:
- Выберите
A1:B17
и на ленте выберите Data
> From Table/Range
в разделе «Получить и преобразовать данные» - Выберите для импорта данных без заголовков. Откроется новое окно.
- На ленте нажмите
Transform
> Group By
. В этом меню выберите «Группировать по столбцу 1», выберите имя нового столбца, например: «Сгруппированный», затем выберите «1057» в раскрывающемся списке «Операция» и нажмите OK
. - . Вы заметите дополнительный столбец. Теперь на ленте нажмите
Add Column
> Custom Column
и введите следующую формулу: Table.Column([Grouped], "Column2")
. Это должно добавить третий столбец, который содержит список значений. - Удалить
Grouped
из таблицы. Затем нажмите значок справа от имени добавленного столбца, и у вас будет два варианта. Выберите Extract Values
, затем выберите запятую в качестве разделителя.
Может быть ошибка перевода в М-коде ниже, но это должно быть так:
let
Source = Excel.CurrentWorkbook(){[Name="Tabel1"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Column1", Int64.Type}, {"Column2", Int64.Type}}),
#"Grouped Rows" = Table.Group(#"Changed Type", {"Column1"}, {{"Grouped", each _, type table [Column1=number, Column2=number]}}),
#"Added Custom" = Table.AddColumn(#"Grouped Rows", "Custom", each Table.Column([Grouped], "Column2")),
#"Extracted Values" = Table.TransformColumns(#"Added Custom", {"Custom", each Text.Combine(List.Transform(_, Text.From), ","), type text}),
#"Removed Columns" = Table.RemoveColumns(#"Extracted Values",{"Grouped"})
in
#"Removed Columns"
PowerQuery доступен в Excel-2010, если я не ошибаюсь, поэтому вам не потребуется доступ к расширенным формулам, таким как TEXTJOIN
, для выполнения этого.