Ir para conteúdo
Fórum Script Brasil

qwwq qwwqqw

Membros
  • Total de itens

    2
  • Registro em

  • Última visita

Sobre qwwq qwwqqw

qwwq qwwqqw's Achievements

0

Reputação

  1. Olá! Tudo bem? O que você quer fazer é totalmente possível via VBA, e na verdade acaba ficando até mais flexível que o PROCV no Excel. A ideia é simples: quando o usuário escolher o Produto e a Embalagem no UserForm e clicar em Gerar, o VBA deve percorrer a planilha, filtrar as linhas que atendem aos critérios e somar os valores. A lógica básica funciona assim: Ler o valor selecionado nos ComboBoxes (por exemplo, cmbProduto e cmbEmbalagem). Percorrer todas as linhas da planilha onde estão os dados. Verificar se o Produto e a Embalagem da linha coincidem com a seleção. Se sim, acumular na variável de soma. Retornar o resultado no seu TextBox ou Label no UserForm. Aqui vai um exemplo simples para te ajudar a estruturar: Private Sub btnGerar_Click() Dim ws As Worksheet Dim ultimaLinha As Long Dim i As Long Dim prod As String Dim emb As String Dim soma As Double Set ws = ThisWorkbook.Sheets("Dados") ' nome da aba com os dados ultimaLinha = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row prod = cmbProduto.Value emb = cmbEmbalagem.Value soma = 0 ' Percorre todos os dados For i = 2 To ultimaLinha If ws.Cells(i, 1).Value = prod And ws.Cells(i, 2).Value = emb Then soma = soma + ws.Cells(i, 3).Value ' supondo que a soma está na coluna C End If Next i txtResultado.Value = soma End Sub Basta ajustar as colunas conforme a estrutura da sua planilha. Se quiser, pode mandar a imagem do UserForm e alguns exemplos de dados — aí posso adaptar o código exatamente ao que você precisa.
  2. 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!
×
×
  • Criar Novo...