Как объединить строки без потери данных в Excel - PullRequest
0 голосов
/ 07 февраля 2019

Предупреждение: я новичок !!!

У меня есть набор данных в Excel, который настроен так, как показано ниже, но с 70-ю столбцами и 11 000+ строками.

id          name    Birth   56    57    58
bob|1996    bob    1996     r       
bob|1996    bob    1996           r 
bob|1996    bob    1996                 r
bob|1997    bob    1997     s       

Я хочу, чтобы вышесказанное выглядело так:

id          name    Birth   56  57  58
bob|1996    bob     1996    r   r   r
bob|1997    bob     1997    s   

Пожалуйста, помогите!Большое спасибо, что нашли время, чтобы прочитать это, кстати.

1 Ответ

0 голосов
/ 07 февраля 2019
  • Сбор данных в массив вариантов
  • Обработка сортировки в массиве в обратном направлении
  • Сброс данных обратно на лист
  • Удаление дубликатов на основепервый столбец.

код:

Option Explicit

Sub Macro1()

    Dim i As Long, j As Long, arr As Variant

    With Worksheets("sheet10")

        'Collect the data into a variant array
        arr = .Range(.Cells(2, "A"), .Cells(.Rows.Count, "A").End(xlUp).Offset(0, 5)).Value2

        'Process the collation within the array backwards
        For i = UBound(arr, 1) To LBound(arr, 1) + 1 Step -1
            If arr(i, 1) = arr(i - 1, 1) Then
                For j = 4 To UBound(arr, 2)
                    arr(i - 1, j) = arr(i, j) & arr(i - 1, j)
                Next j
            End If
        Next i

        'Dump the data back to the worksheet
        .Cells(2, "A").Resize(UBound(arr, 1), UBound(arr, 2)) = arr

        'Remove duplicates based on the first column.
        With .Range(.Cells(1, "A"), .Cells(.Rows.Count, "A").End(xlUp).Offset(0, 5))
            .RemoveDuplicates Columns:=1, Header:=xlYes
        End With
    End With
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...