데이터를 열로 분할

데이터를 열로 분할

작업 중인 스프레드시트가 있습니다. 이 시트에는 두 개의 열이 있습니다. A 열은 고유 식별자이고 B 열에는 ID 번호가 있습니다. 하나의 식별자는 최대 1개 또는 5개의 ID를 가질 수 있습니다. 내가 해야 할 일은 모든 ID를 이전 및 이후 이미지에 첨부한 식별자를 유지하는 하나의 행으로 이동하는 것입니다.

나는 이것을 할 수 있는 몇 가지 공식이 있다고 확신합니다. 당신이 도울 수 있기를 바랍니다.

전에

전에

후에

후에

답변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 열은 더 이상 필요하지 않으므로 삭제할 수 있습니다.

관련 정보