Группировать текстовые данные из строк в ячейку

У меня есть такие данные:

A         B
Start     End
A         D
A         X
A         Y
A         Z
B         P
B         R
B         O
B         T
..        ..

Без VBA как мне сгруппировать эти данные?:

A  D,X,Y,Z
B  P,R,O,T

Через VBA у меня есть:

Sub identify_unique_values()
    Dim vData As Variant
    Dim lLoop As Long
    Dim strID As String, strDesc As String

    '// Original data sheet, change codename to suit
    vData = Sheet1.UsedRange.Value

    With CreateObject("Scripting.Dictionary")
        .CompareMode = 1

        For lLoop = 1 To UBound(vData, 1)
            strID = vData(lLoop, 1): strDesc = vData(lLoop, 2)

            If Not .exists(strID) Then
                .Add strID, strDesc
            Else
               .Item(strID) = .Item(strID) & " " & strDesc
            End If
        Next

       '// Data output, change sheet codename to suit
        Worksheets("Sheet2").Range("A1").Resize(.Count).Value = Application.Transpose(.keys)
        Worksheets("Sheet2").Range("B1").Resize(.Count).Value = Application.Transpose(.items)
    End With

End Sub

Чтобы скопировать значения из листа 1 в лист 2 и вставить его в нужное место, используя vba

1 ответ

Если предположить, Start в A1Пожалуйста, попробуйте, в C2:

=IF(A1=A2,C1&","&B2,B2)  

и в D2:

=LEN(C2)  

и скопировать оба вниз, чтобы удовлетворить затем отфильтровать ColumnD для 7,

Более общее решение, которое должно работать для любого размера набора (будь то регулярного размера или нет) при условии сортировки ColumnA, будет применяться вместо этого в D2:

=A2<>A3

и фильтр ColumnD для TRUE,

Чтобы извлечь только необходимые результаты, формулы должны быть заменены значениями, скажем, с помощью Select, Copy, Paste Special, Values.

Пример SO25305129

Другие вопросы по тегам