
답변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) 먼저 데이터를 ID별로 정렬하여 함께 그룹화합니다.
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 열은 더 이상 필요하지 않으므로 삭제할 수 있습니다.