Boa tarde!
Pelo que entendi, você precisa agrupar os dados e somar os valores correspondentes usando VBA, transformando uma lista “massiva” em uma tabela resumida, semelhante ao exemplo da imagem.
Uma abordagem simples e eficiente é usar um Dictionary para ir acumulando os valores por cada chave (por exemplo, por categoria, código, ou o campo que estiver na primeira coluna). Depois, basta escrever o resultado consolidado numa nova área da planilha.
Aqui vai um exemplo de código VBA que costuma resolver exatamente esse tipo de problema:
Sub AgruparESomar() Dim dict As Object Set dict = CreateObject("Scripting.Dictionary") Dim ws As Worksheet Set ws = ThisWorkbook.Sheets("Dados") ' ajustar nome da folha Dim ultimaLinha As Long ultimaLinha = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row Dim i As Long Dim chave As String Dim valor As Double ' Ler dados da lista original For i = 2 To ultimaLinha ' assumindo cabeçalho na linha 1 chave = ws.Cells(i, 1).Value valor = ws.Cells(i, 2).Value If dict.exists(chave) Then dict(chave) = dict(chave) + valor Else dict.Add chave, valor End If Next i ' Escrever resultado Dim linhaSaida As Long linhaSaida = 2 ' onde começar a saída Dim k As Variant For Each k In dict.Keys ws.Cells(linhaSaida, 4).Value = k ' coluna D = chave ws.Cells(linhaSaida, 5).Value = dict(k) ' coluna E = soma linhaSaida = linhaSaida + 1 Next k MsgBox "Processo concluído!" End Sub
Como funciona:
Lê cada linha da tabela original.
Usa o Dictionary para somar valores repetidos.
Escreve o resultado agrupado numa nova parte da planilha.
Caso precise adaptar para mais colunas, somar vários campos ou usar critérios diferentes, posso ajustar o código conforme a sua estrutura de dados.
Se puder, envie os nomes das colunas ou um exemplo textual da tabela!