Option Explicit
Sub somarValores()
On Error GoTo fim
Dim dataInicial, dataFinal As Date
Dim linha As Long
Dim soma As Double
Dim valor1, valor2 As Double
soma = 0
linha = 2
dataInicial = CDate(Plan3.Cells(2, 8).Value)
dataFinal = CDate(Plan3.Cells(2, 9).Value)
While Plan3.Cells(linha, 1).Value <> ""
valor1 = CDbl(Plan3.Cells(linha, 2).Value)
valor2 = CDbl(Plan3.Cells(linha, 3).Value)
'se a data da coluna 1 estiver entre a data inicial e a data final
If CDate(Plan3.Cells(linha, 1).Value) >= dataInicial And CDate(Plan3.Cells(linha, 1)) <= dataFinal Then
'somar os valores
soma = soma + valor1 + valor2
End If
'passa para a próxima linha
linha = linha + 1
Wend
'coloca o valor da soma total na coluna 10 da linha 2
Plan3.Cells(2, 10).Value = soma
Exit Sub
fim:
MsgBox "Não foi possível efetuar a soma"
End Sub
Sub somarValores2()
On Error GoTo fim
Dim dataInicial, dataFinal As Date
Dim linha As Long
Dim soma As Double
Dim valor1, valor2 As Double
soma = 0
linha = 2
dataInicial = CDate(Plan2.Cells(2, 8).Value)
dataFinal = CDate(Plan2.Cells(2, 9).Value)
While Plan2.Cells(linha, 1).Value <> ""
valor1 = CDbl(Plan2.Cells(linha, 2).Value)
valor2 = CDbl(Plan2.Cells(linha, 3).Value)
'se o mês da coluna 1 for igual ao mês da data inicial ou for igual ao mês da data final
If Month(CDate(Plan2.Cells(linha, 1).Value)) = Month(dataInicial) Or Month(CDate(Plan2.Cells(linha, 1).Value)) = Month(dataFinal) Then
'se o ano da coluna 1 for igual ao ano da data inicial ou for igual ao ano da data final
If Year(CDate(Plan2.Cells(linha, 1).Value)) = Year(dataInicial) Or Year(CDate(Plan2.Cells(linha, 1).Value)) = Year(dataFinal) Then
soma = soma + valor1 + valor2
End If
End If
linha = linha + 1
Wend
Plan2.Cells(2, 10).Value = soma
Exit Sub
fim:
MsgBox "Não foi possível efetuar a soma"
End Sub
Sub somarValores3()
On Error GoTo fim
Dim dataInicial, dataFinal As Date
Dim dt As Date
Dim linha As Long
Dim soma As Double
Dim valor1, valor2 As Double
soma = 0
linha = 2
dataInicial = CDate(Plan1.Cells(2, 9).Value)
dataFinal = CDate(Plan1.Cells(2, 10).Value)
While Plan1.Cells(linha, 1).Value <> ""
valor1 = CDbl(Plan1.Cells(linha, 3).Value)
valor2 = CDbl(Plan1.Cells(linha, 4).Value)
dt = CDate(Plan1.Cells(linha, 2).Value)
'se o mês da coluna1 estiver entre a data inicial e a data final
If Month(CDate(Plan1.Cells(linha, 1).Value)) = Month(dataInicial) Or Month(CDate(Plan1.Cells(linha, 1).Value)) = Month(dataFinal) Then
'se o ano da coluna1 estiver entre a data inicial e a data final
If Year(CDate(Plan1.Cells(linha, 1).Value)) = Year(dataInicial) Or Year(CDate(Plan1.Cells(linha, 1).Value)) = Year(dataFinal) Then
'se o mês da coluna2 estiver entre a data inicial e a data final
If Month(CDate(Plan1.Cells(linha, 2).Value)) = Month(dataInicial) Or Month(CDate(Plan1.Cells(linha, 2).Value)) = Month(dataFinal) Then
'se o ano da coluna2 estiver entre a data inicial e a data final
If Year(CDate(Plan1.Cells(linha, 2).Value)) = Year(dataInicial) Or Year(CDate(Plan1.Cells(linha, 2).Value)) = Year(dataFinal) Then
'se o mês da coluna1 for igual ao mês da coluna2
If Month(CDate(Plan1.Cells(linha, 1).Value)) = Month(dt) Then
'se o ano da coluna1 for igual ao ano da coluna2
If Year(CDate(Plan1.Cells(linha, 1).Value)) = Year(dt) Then
'soma os valores
soma = soma + valor1 + valor2
End If
End If
End If
End If
End If
End If
linha = linha + 1
Wend
'coloca o valor da soma na coluna 11
Plan1.Cells(2, 11).Value = soma
'sai do procedimento
Exit Sub
fim:
MsgBox "Não foi possível efetuar a soma"
End Sub
Postado : 03/01/2018 11:25 am