Variação sobre como combinar valores de várias linhas em uma única linha no Excel? [duplicado]

0

Oi eu estou tentando adaptar o excelente VBA que foi publicado anteriormente para passar por dados e tomar todas as linhas com o mesmo id na coluna 1 e adicioná-los todos em uma linha para cada um. Tentando superar isso:

Paraisso

mas o código adaptado abaixo apenas combina 2 linhas, mesmo que haja mais de duas com o mesmo id na coluna 1.

Sub CombineInvoices()
Dim currentRow As Long
Dim currentCol As Long
Dim LastRow As Long
LastRow = Cells(Rows.Count, 1).End(xlUp).Row 
currentCol = 4
For currentRow = LastRow To 2 Step -1
    If Cells(currentRow, 1) = Cells(currentRow - 1, 1) Then
        Range(Cells(currentRow, 1), Cells(currentRow, 4)).Copy Destination:=Range(Cells(currentRow - 1, currentCol + 1), Cells(currentRow - 1, currentCol + 4))
        Rows(currentRow).EntireRow.Delete
    End If
Next
currentCol = currentCol + 4
End Sub

Tudo ajuda muito recebido com gratidão.

se você mover a instrução currentCol = currentCol + 4

    
por Pbot 30.09.2016 / 14:12

1 resposta

0

Consegui resolver isso. Eu estava excluindo as linhas como eu estava indo separar as instruções de cópia e exclusão como abaixo e tudo está funcionando! Yay!

Sub CombineRowsRevisitedStep()
Dim currentRow As Long
Dim currentCol As Long
Dim LastRow As Long
LastRow = Cells(Rows.Count, 1).End(xlUp).Row
currentCol = 4
For currentRow = LastRow To 2 Step -1
    If Cells(currentRow, 1) = Cells(currentRow - 1, 1) Then
        Range(Cells(currentRow, 1), Cells(currentRow, currentCol)).Copy Destination:=Range(Cells(currentRow - 1, 4), Cells(currentRow - 1, currentCol + 30))
    currentCol = currentCol + 4
    End If
Next
For currentRow = LastRow To 2 Step -1
    If Cells(currentRow, 1) = Cells(currentRow - 1, 1) Then
        Rows(currentRow).EntireRow.Delete
    End If
Next
End Sub
    
por 30.09.2016 / 15:04