Notifications
Clear all

Somase com VBA

7 Posts
3 Usuários
0 Reactions
1,341 Visualizações
(@guisn21rs)
Posts: 4
New Member
Topic starter
 

Bom dia galera. Estou amarrado em uma função que deveria ser simples, mas que não consigo fazer funcionar. Como vocês fariam em VBA a seguinte fórmula do excel: =somase ( N16:N501 ; ">="N16 ; N16:N501), assim mesmo, somando todos os itens da coluna que sejam maiores ou iguais ao N16, inclusive ele mesmo?
Fiz assim e não rolou:
Range("O16").Value = WorksheetFunction.SumIf(Range("N16:N501"), "" >= " & range("N16") & ", Range("N16:N501"))
Imagino que eu esteja me atrapalhando nas " " da condição, ou será que o meu problema é mais grave?

Obrigado!

 
Postado : 07/02/2018 6:54 am
(@klarc28)
Posts: 971
Prominent Member
 
Sub teste()

Range("O16").Value = WorksheetFunction.SumIf(Range("N16:N501"), ">=N16", Range("N16:N501"))

End Sub
 
Postado : 07/02/2018 7:03 am
(@guisn21rs)
Posts: 4
New Member
Topic starter
 

Ótimo! Mais simples do que pensava. Só mais uma pergunta que me ocorreu que eu posso precisar a seguir: se ao invés do N16 fixo eu tiver esse SUMIF dentro de um FOR TO, como eu faço pra indicar uma variável no condicional?
Assim não funcionou:
Dim X As Integer
For X = 16 To 501
If Cells(X, 14) = 0 Then
Cells(X, 15).Value = 0
Else
Range("O" & X).Value = WorksheetFunction.SumIf(Range("n16:n501"), " >= Range("N" & X) ", Range("n16:n501"))
Next X

Obrigado Klarc!

 
Postado : 07/02/2018 7:30 am
(@klarc28)
Posts: 971
Prominent Member
 
Sub teste()

Dim X As Integer
For X = 16 To 501
If Cells(X, 14) = 0 Then
Cells(X, 15).Value = 0
Else
Range("O" & X).Value = WorksheetFunction.SumIf(Range("n16:n501"), ">=N" & X, Range("n16:n501"))
End If
Next X

End Sub
 
Postado : 07/02/2018 7:47 am
(@guisn21rs)
Posts: 4
New Member
Topic starter
 

Pra mim ele retorna zero em todas as células da coluna, tanto da forma como eu tinha feito quanto da forma como sugeristes...

 
Postado : 07/02/2018 7:58 am
(@osvaldomp)
Posts: 858
Prominent Member
 

Experimente:

Range("O" & X).Value = WorksheetFunction.SumIf(Range("N16:N501"), ">=" & Range("N" & X).Value, Range("N16:N501"))

Osvaldo

 
Postado : 07/02/2018 8:17 am
(@guisn21rs)
Posts: 4
New Member
Topic starter
 

Cara, tua sugestão não tinha como estar errada, então desconfiei que o problema fosse outro e descobri o seguinte: os números da coluna N que to somando são todos menores que 1 (0,08 / 0,1 / 0,17 / etc), e por isso está retornando tudo zero. Se altero os números para quaisquer números acima de 1, funciona perfeito. Sabes porque o SUMIF não tá pegando os números abaixo de 1?

 
Postado : 07/02/2018 8:28 am