Excel - Uma macro para agrupar por coluna e valores de soma

O Microsoft Office Software compreende o Microsoft Excel, que é um aplicativo de planilha com tabelas gráficas, cálculos, uma linguagem de programação de macro, chamada VBA (Visual Basics for Applications) e tabelas dinâmicas. Uma tabela dinâmica é usada para listar dados; Ele reconhece e resume esses dados para obter resultados especificados. Uma macro representa uma lista de comandos ou ações para agilizar os dados demorados ou tarefas repetitivas no software do Office Excel. isso pode ser executado sempre que você precisar executar a tarefa. Ele pega os valores, executa a operação necessária e retorna o valor de acordo. Se você quiser gravar uma macro para agrupar por coluna e somar valor, basta iniciar a macro usando os comandos relevantes.

Questão

Eu preciso escrever uma macro para o exemplo a seguir:

 Item Qtde Comprimento A 1 100 A 1 100 B 2 200 B 1 100 B 5 100 C 4 200 C 2 100 C 1 200 C 3 100 

Basicamente eu quero agrupar pela coluna A (ou seja, item) e coluna C (ou seja, comprimento) e também deseja adicionar o total de cada alteração em comprimentos, para um item. Nesse caso, o resultado na nova planilha seria o seguinte:

 Item Qtd. Compr. A 2 100 B 2 200 B 6 100 C 5 200 C 5 100 

Espero que isso faça sentido.

Alguém pode me ajudar a escrever uma macro do Excel para isso, por favor?

Solução

Tente isso

Suposição:

  • 1. Quando você inicia uma macro, a planilha de onde os dados devem ser copiados é a planilha ativa
  • 2. Uma célula vazia na coluna A indica o fim dos dados
  • 3. Você deseja colar na planilha 3 (correta na macro, se não for o caso)

 Sub consolidateData () Dim lRow As Long Dim ItemRow1, ItemRow2 As String Dim lengthRow1, lengthRow2 As String Columns ("A: C"). Selecione Selection.Copy Sheets ("Sheet3"). Selecione Range ("A1"). Selecione ActiveSheet Células de pasta.Selecione Selection.Sort _ Chave1: = Faixa ("A2"), Ordem1: = xlAscendente, _ Chave2: = Faixa ("C2"), Ordem2: = xlDescendente, _ Cabeçalho: = xlYes, OrdemCustom: = 1, MatchCase: = False, Orientação: = xlTopToBottom, _ DataOption1: = xlSortNormal lRow = 2 Do While (Células (lRow, 1) "") ItemRow1 = Células (lRow, "A") ItemRow2 = Células (lRow + 1, "A") lengthRow1 = Células (lRow, "C") lengthRow2 = Células (lRow + 1, "C") Se ((ItemRow1 = ItemRow2) E (lengthRow1 = lengthRow2)) Então Células (lRow, "B") = Células (lRow, "B") + Células (lRow + 1, "B") Filas (lRow + 1) .Excluir Else lRow = lRow + 1 End Se o Loop End Sub 

Nota

Graças a rizvisa1 por esta dica no fórum.

Artigo Anterior Próximo Artigo

Principais Dicas