수식 건너뛰기 중복으로 셀 병합

수식 건너뛰기 중복으로 셀 병합

우리의 목표는 A의 데이터가 동일할 때 이름(B)을 병합하는 것입니다. 아래 수식은 다음 줄(A)을 보고 동일하면 B의 데이터(이름)를 병합합니다. 수식은 C에 ​​있으므로 병합된 이름의 결과는 C에 나타납니다. =IF(A2<>A3,B2, B2&" , "&B3)

:만약에 A2:XYZ 그리고 A3:XYZ 그 다음에병합 B2:Sam하고 .B3:DanC = "Sam, Dan"

문제: 일치하는 A가 있는 하나의 셀(C)에 병합된 모든 이름을 표시하고 중복 항목을 건너뛰어야 합니다.

만약에 A1:A4 = XYZ, 그리고B1:샘 B2=댄 B3=댄 B4=조`그 다음에C의 결과는 "Sam, Dan, Joe"로 읽어야 합니다.

어떤 제안이라도 감사하겠습니다.

답변1

이 VBA는 오름차순으로 정렬하고, 중복 항목을 제거하고, 출력 목록을 제공합니다.

Sub test()
Application.ScreenUpdating = False
' Sort Ascending
    ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("A1"), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Sheet1").Sort
        .SetRange Range("A:B")
        .Header = xlNo
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With

'Remove Duplicates
    ActiveSheet.Range("A:B").RemoveDuplicates Columns:=Array(1, 2), Header:=xlNo

'concatenate
Dim data, numrows As Long, result, i As Long, n As Long


If Range("a1") = "" Then Exit Sub

With Range("a1", Cells(Rows.Count, "a").End(xlUp)).Resize(, 2)

    .Sort key1:=Range("a1"), Header:=xlNo
    data = .Value
    numrows = UBound(data)
    ReDim result(1 To numrows, 1 To 1)


    For i = 1 To numrows

    temp = data(i, 1)
    result(i, 1) = result(i, 1) & data(i, 2)

    For n = i + 1 To numrows

        If data(n, 1) = temp Then result(i, 1) = result(i, 1) & ", " & data(n, 2) Else Exit For

    Next

    i = n - 1

    Next

    .Offset(, 2).resize(,1) = result

    End With

    Application.ScreenUpdating = True


End Sub

관련 정보