Notifications
Clear all

SUMIFS COM DATEPAR - COMO UTILIZAR?

11 Posts
2 Usuários
0 Reactions
1,835 Visualizações
(@ericsson)
Posts: 54
Trusted Member
Topic starter
 

Pessoal tenho uma dúvida!!

Como utilizar a função sumifs com a datepart.

Tenho uma coluna com os valores a serem somados e outra com datas do mês de janeiro até hoje - pagamentos ex.: 01/06/2014, gostaria de somar o valor total dos registros do mês 1.

Coluna "S" possui o valor,
Coluna "H" possui as datas. no formato dd/mm/aaaa
A variável MES já possui o valor 1 armazenado.

          Cells(6, 4) = WorksheetFunction.SumIfs(Worksheets("BANCO").Columns("S"), _
        Worksheets("BANCO").Columns("H"), MES)

Como fazer?

 
Postado : 11/06/2014 8:36 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Bom dia!!

Já tentou usar um formula nativa do excel e por o resultado em uma célula?

Leia:
http://www.google.com.br/cse?cx=partner ... lula%20vba

Att

 
Postado : 11/06/2014 8:41 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Se entendi corretamente, não precisade VBA, é só utilizar a Função SOMARPRODUTO.

Você colocou a data "01/06/2014" e diz :gostaria de somar o valor total dos registros do mês 1. Sua data está invertida ?

De qualquer forma, para Somar somente valores referente ao Mes 1 utilize a formula abaixo.
=SOMARPRODUTO((MÊS(H2:H10)=1)*(S2:S10))

Para outros meses é só alterar o numero 1.

Veja mais sobre o assunto em:
Dica sobre contagens e somas condicionais (Parte I)
Mensagem por adilsonsoledade » 09 Mar 2009
http://info.abril.com.br/forum/viewtopi ... 11d855dbf2

[]s

 
Postado : 11/06/2014 9:08 am
(@ericsson)
Posts: 54
Trusted Member
Topic starter
 

Então, goataria da forma em VBA.

A data "01/06/2014" era exemplo para a forma que está lançada na coluna.

Os dados são do dia 01/01/2014 a 10/06/2014 e eu queria somar somente os dados do mês de janeiro = 1.

Como fazer?

 
Postado : 11/06/2014 10:52 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Ericson

Este tópico pode te ajudar:

viewtopic.php?f=10&t=4565

[]s

 
Postado : 11/06/2014 10:55 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!!

Considerando que você usou pesquisa do fórum conforme indicado por mim e vai aplicar a formula indicada pelo Mauro....

Sub TenteAdaptar()
    [A1].Formula = "=SUMPRODUCT((MONTH(H2:H10)=1)*(S2:S10))"
End Sub

Att

 
Postado : 11/06/2014 11:10 am
(@ericsson)
Posts: 54
Trusted Member
Topic starter
 

Sim, li, tentei e não deu certo, além de gerar um fórmula na célula que na verdade gostaria que informasse somente o valor.

 
Postado : 11/06/2014 11:42 am
(@ericsson)
Posts: 54
Trusted Member
Topic starter
 

Segue arquivo simplificado para quem poder me ajudar!

 
Postado : 11/06/2014 11:46 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Para constar, o VBA não tem uma função que permita somar conforme o pretendido. Assim é necessário utilizar as funções de planilhas (se estiver disponível para o VBA, pois não são todas).
Porem é possivel utiliza em vba =/- assim:

Sub teste()
mes = 6
ulin = Sheets("BANCO").Cells(Rows.Count, "A").End(xlUp).Row
For x = 6 To ulin
If Month(Sheets("BANCO").Cells(x, "A")) = mes Then
    tMes = tMes + Sheets("BANCO").Cells(x, "B")
End If
Next
Sheets("BANCO").Cells(6, "D") = tMes
End Sub
 
Postado : 11/06/2014 11:51 am
(@ericsson)
Posts: 54
Trusted Member
Topic starter
 

Para utilizar um loop iria demorar demais para contar a cada iteração do usuário, visto que, são 20 empresas e cada mês possui cerda de 5000 linhas.

Como não tem jeito para fazer como eu imaginei, fiz da seguinte forma:

Incluir um Loop para registrar o mês na coluna C pr meio do Datepart("m",DATA) quando eu carregasse os dados, desta forma o usuário não teria que esperar um loop em tempo de execução a cada troca de empresa.

Com isso, utilizei a função sumifs da seguinte forma:

 
       Worksheets("RESUMO_EMPRESAS").Cells(6 , 3) = ((WorksheetFunction.SumIfs(Worksheets("BANCO").Columns("B"), _
        Worksheets("BANCO").Columns("D"), Worksheets("RESUMO_EMPRESAS").Cells(1 , 1), _
        Worksheets("BANCO").Columns("C"), MES) )

Valeu galera!!

 
Postado : 11/06/2014 12:26 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Reinaldo, a função SOMARPRODUTO pode ser utilizada através do VBA (SUMPRODUCT), então conforme a formula que indiquei acima no VBA ficaria :

É só ajustar os Ranges, mas se for o caso podemos deixa-lo dinamico utilizando a opção de captar as linhas.

Sub SumProductMauro()
    Dim vTT As String
    
    '=SOMARPRODUTO((MÊS(H2:H10)=1)*(S2:S10))
    vTT = "SUMPRODUCT((MONTH(H2:H10)=(1))*(S2:S10))"
    
    MsgBox Application.Evaluate(s)

End Sub

Ericson, faça os testes e veja se é isto o que pretende

[]s

 
Postado : 11/06/2014 1:06 pm