Notifications
Clear all

SomaSe com vba

6 Posts
4 Usuários
0 Reactions
1,512 Visualizações
(@selmo)
Posts: 236
Reputable 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...

 
Postado : 22/11/2014 8:22 am
(@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

 
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

 
Postado : 22/11/2014 11:10 am
(@selmo)
Posts: 236
Reputable 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 :/

 
Postado : 22/11/2014 4:30 pm
(@trindade)
Posts: 0
New 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.

 
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

 
Postado : 22/11/2014 10:59 pm