Я предлагаю решение, которое требует немного VBA.
В этом примере пример данных находится в B2:C10.
Оставьте E1 в качестве ячейки заголовка, а в E2 поместите следующую формулу и нажмите CTRL + SHIFT + ENTER на панели формул, чтобы создать формулу массива. Формула теперь должна быть заключена в фигурные скобки, чтобы указать, что это формула массива.
=IFERROR(INDEX($B$2:$B$10, MATCH(0, COUNTIF(E$1:$E1, $B$2:$B$10), 0),1),"")
Перетащите это вниз, пока не получите пробелы. Сначала создается список уникальных значений из группы на B2:B10. Обратите внимание, что куда бы вы ни поместили эту формулу, по крайней мере на одну ячейку над ней должна быть доступна ссылка. E1 в этом случае как формула начинается с E2.
Мы собираемся использовать функцию под названием TEXTJOIN. Однако в большинстве версий Excel это недоступно. Это возможно, если вы используете Office 365 версию Excel 2016. Если недоступно, используйте ниже UDF (пользовательскую функцию) в VBA для репликации той же функциональности.
Нажмите ALT + F11 для доступа к VBA Editor. Вставьте модуль из меню вставки. Поместите в него следующий UDF.
Function TEXTJOIN1(delimiter As String, ignore_empty As Boolean, ParamArray cell_ar() As Variant)
For Each cellrng In cell_ar
For Each cell In cellrng
If ignore_empty = False Then
result = result & cell & delimiter
Else
If cell <> "" Then
result = result & cell & delimiter
End If
End If
Next cell
Next cellrng
TEXTJOIN1 = Left(result, Len(result) - Len(delimiter))
End Function
Теперь вернемся к листу Excel, мы будем использовать эту функцию в качестве UDF в формуле.
В F2 поместите следующую формулу и нажмите CTRL + SHIFT + ENTER, чтобы создать формулу массива.
=IFERROR(TEXTJOIN1(CHAR(10),TRUE,IF($B$2:$B$10=E2,$C$2:$C$10,"")),"")
Перетащите его вниз до намеченных строк Подождите, это создаст список имен по группам, объединенным с помощью Char(10), но чтобы увидеть правильный эффект, вам нужно включить Wrap Text на нужные ячейки.
Вы можете сделать это вручную с помощью параметра Формат ячеек в Excel или использовать этот простой макрос, чтобы сделать это за вас. Просто укажите диапазон в начале. В этом примере это E2:F4.
Нажмите ALT + F11 для доступа к VBA Editor. Вставьте модуль из меню вставки и вставьте в него следующий код. Это создает макрос с именем Format1
Sub Format1()
Range("E2:F4").Select
With Selection
.HorizontalAlignment = xlLeft
.VerticalAlignment = xlTop
.WrapText = True
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
End Sub
Вернуться в лист Excel Нажмите ALT + F8 для доступа к диалоговому окну Macro и запустите Format1.
Протестируйте это решение с вашей стороны и дайте мне знать в случае каких-либо проблем.