Pessoal, estou com um problema. Antes de mais nada, não posso utilizar somase, pois a planilha que estou trabalhando é muito grande e o PC trava. Por isso eis a questao para solucionarmos via macro
Produto Valor SOMA
A R$ 10,00
A R$ 20,00
B R$ 23,15
C R$ 23,15
C R$ 854,40
D R$ 854,40
D R$ 854,40
D R$ 67,17
E R$ 213,32
E R$ 213,32
F R$ 346,97
F R$ 298,74
Preciso que na coluna "SOMA" apareça o somatório da coluna "VALOR", como se o RANGE do intervalo a somar variasse ate que o produto se altere.
A planilha esta anexa.
Agradeço a ajuda dos amigos.
leandro_vf,
Boa tarde!
Veja se é assim.
Desenvolvo pequenas soluções em VBA Excel a valores que variam entre R$ 50,00 a R$ 200,00. Se te interessar, entre no meu instagran (vba_excel_desenvolvimento)
Atenciosamente
Wagner Morel
leandro_vf,
Boa tarde!
Veja se é assim.
Oi Wagner,
Antes de mais nada obg pela ajuda. Seria mais ou menos isso, so que preciso que o resultado da soma que apareca seja sempre o total do produto e nao o parcial obtido na altura da linha. Uma informacao importante e que na sequencia das linhas, na hora que muda o produto nao tem possibilidade de aparecer novamente.
Ok.
Entendi. Vamos aguardar, então, que alguém complemente pois o meu conehcimento é insuficiente para prosseguir.
Desenvolvo pequenas soluções em VBA Excel a valores que variam entre R$ 50,00 a R$ 200,00. Se te interessar, entre no meu instagran (vba_excel_desenvolvimento)
Atenciosamente
Wagner Morel
Pois e. O meu tambem.
Olá, Leandro.
Veja se este código atende.
Sub SomaProduto() Dim x As Long, k As Long For x = 2 To Cells(Rows.Count, 1).End(xlUp).Row k = Application.CountIf([A:A], Cells(x, 1)) Cells(x + k - 1, 3) = Application.Sum(Range(Cells(x, 2), Cells(x + k - 1, 2))) x = x + k - 1 Next x End Sub
Osvaldo
Ola Osvaldo!
Cara a soma ta correta, mas os valores obtidos da soma precisam se repetir em cada linha do produto.
Entende?
Com esse codigo o somatorio esta sendo incluido no ultimo produto da lista apenas.
Proposta do colega Morel modifica; veja se auxilia/atende
Sub Somar() Dim i As Long, j As Long, UltimaLinha As Long Dim Soma As Double UltimaLinha = Sheets("Plan1").Cells(Cells.Rows.Count, 1).End(xlUp).Row If UltimaLinha < 2 Then UltimaLinha = 2 For i = 2 To UltimaLinha For j = 2 To UltimaLinha If Range("A" & j).Value = Range("A" & i).Value Then Soma = Soma + CDbl(Range("B" & j).Value) If Range("A" & j + 1).Value <> Range("A" & i).Value Then Range("C" & j).Value = CDbl(Soma) 'Format(Soma, "#,##0.00") Soma = 0 End If End If Next Soma = 0 Next End Sub
Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel
Cara, O resultado foi o mesmo. O Somatório foi inserido apenas no ultimo produto da sequencia, ficando os demais vazios. Vou pensar em uma segunda macro para preencher os valores vazios com o resultado que voce conseguiu.
Ola Osvaldo!
Cara a soma ta correta, mas os valores obtidos da soma precisam se repetir em cada linha do produto.
Substitua esta linha
Cells(x + k - 1, 3) = Application.Sum(Range(Cells(x, 2), Cells(x + k - 1, 2)))
por esta
Cells(x, 3).Resize(k).Value = Application.Sum(Range(Cells(x, 2), Cells(x + k - 1, 2)))
Osvaldo
Agora foi! Tava tentando fugir de um COUNT mas parece que nao tem jeito. Acho que vai funcionar na minha aplicacao. Obrigado pela ajuda.
Agora foi! Tava tentando fugir de um COUNT mas parece que nao tem jeito. Acho que vai funcionar na minha aplicacao. Obrigado pela ajuda.
Em tempoÇ Quando a planilha for muito grande vai travar, em face do coUNTIF. Vou providenciar uma alternativa e posto aqui.
O que é uma "planilha muito grande" ? Quantas linhas com dados na coluna 'A' ? Como você sabe que "vai travar" ? Já testou ?
Osvaldo
OI Osvaldo. Ja testei. Travou. Muito Grande refiro a quantidade de linhas, mais ou menos 800.000