Página 1 de 1

Unificar duplicados e somar suas quantidades no excel VBA

Enviado: Qui Fev 13, 2020 12:51 pm
por Darlin
Olá, estou tentando criar uma planilha básica de controle de produtos de um sacolão onde seja possível incluir produtos através de um pequeno menu com um botão macro que direciona esses dados para a próxima planilha onde são armazenados esses dados, e na medida que dados repetidos vão sendo inseridos, os itens duplicados são transformados em um único item e suas quantidades somadas, assim como seus valores, tentei construir essa panilha com uma macro de outro tópico mas não obtive resultado, seria muito grato se alguem pudesse me orientar...

Re: Unificar duplicados e somar suas quantidades no excel VBA

Enviado: Qui Fev 13, 2020 9:37 pm
por Reinaldo
Particularmente não consegui entender a demanda, principalmente no que tange à "..assim como seus valores.." Seu modelo está sem nenhum registro que ajude a compreender melhor
Pode fornecer um exemplo pratico de como o seu descritivo deva ocorrer

Re: Unificar duplicados e somar suas quantidades no excel VBA

Enviado: Sex Fev 14, 2020 8:16 am
por Darlin
Olá Reinaldo, obrigado pelo interesse em ajudar e desculpa as informações rasas que eu passei, pois bem, esse pequeno projeto consiste em receber os dados do usuário através de um pequeno menu que seria nome no produdo, quentidade e valor, quando o usuário clica no botão para adicionar essas informações a macro lanca esses dados em outra planilha cuidando para unificar produtos duplicados em uma única célula e somando suas quantidades assim como seus respectivos valores, basicamente é isso, meus conhecimentos em VBA é pouco, por isso peço ajuda.

Re: Unificar duplicados e somar suas quantidades no excel VBA

Enviado: Sex Fev 14, 2020 10:50 am
por Reinaldo
Ainda continuo em duvida a questão de valores.
Mas segue o que, acredito, auxilie

Código: Selecionar todos

Sub btnIncluirProduto_Clique()
'Declaração de variaveis
Dim Localizado
Dim wsM As Worksheet, wsBD As Worksheet
Dim StrProd As String
Dim lngLinha As Long, intQtd As Integer, dblVlr As Double

'Atribui valores as variaveis
Set wsM = Sheets("Cadastro de Produtos")        'planilha  origem dos dados
Set wsBD = Sheets("Controle de Produtos")       'planilha destino dos dados
StrProd = wsM.Range("C2").Value                                 'Obtem nome produto
intQtd = wsM.Range("C4").Value
dblVlr = wsM.Range("C6").Value

'Verifica se há resgistro existente
With wsBD.Range("A:A")
    Set Localizado = .Cells.Find(StrProd, LookIn:=xlValues, LookAt:=xlPart)
End With

'Inicia registro dos dados
If Not Localizado Is Nothing Then
    'Se houver registro atualiza
     lngLinha = Localizado.Cells.Row 'guarda numero da linha onde consta o registro
    
    wsBD.Cells(lngLinha, 2) = wsBD.Cells(lngLinha, 2) + intQtd
    wsBD.Cells(lngLinha, 3) = dblVlr
    wsBD.Cells(lngLinha, 4) = wsBD.Cells(lngLinha, 2) * wsBD.Cells(lngLinha, 3)
Else
    'Se não houver registro acrescenta
     lngLinha = Localizado.Cells.Row 'guarda numero da linha onde consta o registro
    wsBD.Cells(lngLinha, 1) = StrProd
    wsBD.Cells(lngLinha, 2) = wsBD.Cells(lngLinha, 2) + intQtd
    wsBD.Cells(lngLinha, 3) = dblVlr
    wsBD.Cells(lngLinha, 4) = wsBD.Cells(lngLinha, 2) * wsBD.Cells(lngLinha, 3)
End If
End Sub