Notifications
Clear all

SomaSe com vba

6 Posts
4 Usuários
0 Reactions
1,518 Visualizações
selmo
(@selmo)
Posts: 236
Estimable Member
Topic starter
 

Bom dia galera.
Seguinte, estava usando a formula somaSe para somar alguns valores baseados em critérios. Queria fazer o mesmo procedimento com vba, uma vez que terei que alterar o critério usando alguns filtros. Meio perdido no momento.
Em uma planilha, na coluna A, tenho como "A pagar" e "Pago", e na coluna F os valores que quero somar, queria somar os valores a pagar e armazenar o valor para que pudesse usa-lo no formulário...

"A mente que se abre a uma nova ideia jamais voltará ao seu tamanho original."
Albert Einstein

 
Postado : 22/11/2014 8:22 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

É só seguir a mesma lógica de seu outro tópico:
Contar Valores em coluna [Resolvido]
viewtopic.php?f=10&t=13595

Ajuste os Ranges e crie condição IF para os Critérios, armazenando o resultado Variável soma :
soma = WorksheetFunction.SumIf(Range("A2:A10"), "A Pagar", Range("F2:F10"))

[]a

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 22/11/2014 10:11 am
(@gtsalikis)
Posts: 2373
Noble Member
 

Só complementando: o WorksheetFunction permite ao VBA usar as funções do Excel. Apenas lembre que deve chamar a função pelo nome em inglês, e deve usar vírgula no lugar de ponto e vírgula para separar os argumentos.

Abs

Lembre-se de AGRADECER aos que te ajudaram, e de marcar o tópico como [Resolvido]
Gente que cuida de gente.

Gilmar

 
Postado : 22/11/2014 11:10 am
selmo
(@selmo)
Posts: 236
Estimable Member
Topic starter
 

Uma duvida, tenho que setar uma Sheet especifica para que não ocorra de fazer a soma no lugar errado, tentei algo do tipo
soma = WorksheetFunction.SumIf(Sheets("FINANÇAS_PESSOAIS").Range("Q2:Q636"), "RECEBIDO", Range("R2:R636"))
mas aparentemente não funcionou, gostaria de poder executar o código estando em qualquer aba, sem a nescessidade de ficar trocando sempre :/

"A mente que se abre a uma nova ideia jamais voltará ao seu tamanho original."
Albert Einstein

 
Postado : 22/11/2014 4:30 pm
Trindade
(@trindade)
Posts: 278
Reputable Member
 

Boa noite, selmo.

Eu montei algo parecido com o que esta tentando fazer ficou mais ou menos assim:

Eu Declarei a Plan:

Dim wsPlanE As Worksheet
Set wsPlanE = Sheets("LANCAMENTOS")

UltimaLinha = Plan1.Cells(Rows.Count, "A").End(xlUp).Row

Depois montei a formula:

Me.LabelQtdeEntrada.Caption = Application.WorksheetFunction.CountIfs(wsPlanE.Range("B2:B" & UltimaLinha), Format(DTP4.Value, "MM/DD/YYYY"), wsPlanE.Range("E2:E" & UltimaLinha), "Entrada")

No meu caso eu colocava pra exibir em um label, mas creio que de pra armazenar o valor em variável para depois realizar cálculos.

Se a resposta foi útil! Clique na mãozinha ao lado do botão Citar.
Sua dúvida foi respondida? Marque como RESOLVIDO em seus tópicos, usando o botão com marca verde.

 
Postado : 22/11/2014 7:39 pm
(@gtsalikis)
Posts: 2373
Noble Member
 

Uma duvida, tenho que setar uma Sheet especifica para que não ocorra de fazer a soma no lugar errado, tentei algo do tipo
soma = WorksheetFunction.SumIf(Sheets("FINANÇAS_PESSOAIS").Range("Q2:Q636"), "RECEBIDO", Range("R2:R636"))
mas aparentemente não funcionou, gostaria de poder executar o código estando em qualquer aba, sem a nescessidade de ficar trocando sempre :/

O problema é que vc só referenciou o range onde estão os critérios, mas não onde estão os valores para a soma. Asim funciona:

soma = WorksheetFunction.SumIf(Sheets("FINANÇAS_PESSOAIS").Range("Q2:Q636"), "RECEBIDO", Sheets("FINANÇAS_PESSOAIS").Range("R2:R636"))

Assim tb:

With Sheets("FINANÇAS_PESSOAIS")
soma = WorksheetFunction.SumIf(.Range("Q2:Q636"), "RECEBIDO", .Range("R2:R636"))
End With

Abs

Lembre-se de AGRADECER aos que te ajudaram, e de marcar o tópico como [Resolvido]
Gente que cuida de gente.

Gilmar

 
Postado : 22/11/2014 10:59 pm