
У меня есть электронная таблица, над которой я работаю. В этой таблице есть два столбца. Столбец A — это уникальный идентификатор, а столбец B — номера идентификаторов. Один идентификатор может иметь от 1 до 5 идентификаторов. Мне нужно переместить все идентификаторы в одну строку, сохранив идентификатор, который я прикрепил к изображению «до» и «после».
Я уверен, что существует какая-то формула, которая может это сделать, надеюсь, вы сможете помочь.
До
После
решение1
Поместите этот макрос в стандартный модуль и запустите его:
Sub Macro1()
Dim i As Long, j As Long, k As Long, Na As Long
Dim v As String, Nc As Long
Columns("A:A").Copy Columns("C:C")
ActiveSheet.Range("C:C").RemoveDuplicates Columns:=1, Header:=xlYes
Na = Cells(Rows.Count, "A").End(xlUp).Row
Nc = Cells(Rows.Count, "C").End(xlUp).Row
For i = 2 To Nc
k = 4
v = Cells(i, "C").Value
For j = 2 To Na
If v = Cells(j, 1).Value Then
Cells(i, k) = Cells(j, 2).Value
k = k + 1
End If
Next j
Next i
End Sub
Вот пример вывода:
Как видите, мы предполагаем, что входные данные находятся в столбцах.АиБ. Выходные данные идут в столбцах рядом с ними. Коду все равно, отсортированы данные или нет.
решение2
Я делаю это время от времени, но без VBA и в несколько шагов:
1) Сначала отсортируйте данные по идентификатору, чтобы они были сгруппированы вместе.
2) тогда в C2: =if(A1=A2,if(A2=A3,B1&","&B2, "Last,"&B1&","&B2),B2)
3) прогоните это
4) скопируйте и вставьте столбец C в качестве значений (скажем, в столбец D), чтобы избавиться от формулы
5) сортировка по столбцу D, удаление всего, что не содержит «последний»
6) выберите столбец D, вкладка «Данные» > «Текст по столбцам» > «С разделителями» > выберите «Запятые» > «ОК»
Теперь все разбито на уникальные столбцы и находится на той же строке, что и ID. Вы можете удалить столбцы B и C, так как они больше не нужны