6

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

1001NCCN    3618127
1001NCCN    208478
1001NCCN    207316
1001TEMN    409889
1001TEMN    801651
1001TEMN    273134
1001TEMN    208478
1001TEMN    207316

Мне нужно переставить / объединить строки, которые имеют совпадающие значения в первом столбце с конечным результатом, например, так:

1001NCCN    3618127 208478  207316      
1001TEMN    409889  801651  273134  208478  207316

Я посмотрел на сводные таблицы и их фильтрацию, но ни одна из них не показала, что они могут дать мне то, что мне нужно. Есть ли способ сделать это в Excel?

2 ответа2

6

Вот решение VBA

он опирается на сгруппированные строки, поэтому сначала выполните сортировку, если вам нужно

Просто выберите первую ячейку в вашем диапазоне и запустите ...

Sub Mergeitems()
    Dim cl As Range
    Dim rw As Range

    Set rw = ActiveCell

    Do While rw <> ""
        ' for each row in data set
        '   find first empty cell on row
        Set cl = rw.Offset(0, 1)
        Do While cl <> ""
            Set cl = cl.Offset(0, 1)
        Loop

        ' if next row needs to be processed...
        Do While rw = rw.Offset(1, 0)
            cl = rw.Offset(1, 1)       ' move the data
            Set cl = cl.Offset(0, 1)   ' update pointer to next blank cell
            rw.Offset(1, 0).EntireRow.Delete xlShiftUp   ' delete old data
        Loop

        ' next row
        Set rw = rw.Offset(1, 0)
    Loop
End Sub
3

ИМО самый простой способ выполнить такую задачу - с помощью Google Docs. Скопируйте свои данные в пустую электронную таблицу Google. Тогда, скажем, F1 напишите:

=UNIQUE(A:A) 

и в G1 напишите:

=TRANSPOSE(FILTER(B:B,A:A=F1)

и скопировать вниз. Затем скопируйте результаты и вставьте их обратно в Excel.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .