COMPARAR DATAS E DESCONSIDERAR FIM DE SEMANA
Bom dia
tenho seguinte problema preciso comparar datas e utilizar o critério de 3 dias uteis tendo então que desconsiderar o final de semana.
Segue abaixo trecho do codigo
i = 5
Do
[ô]se existir uma célula vazia preenche com a data de hoje
If (Range([Ô]K[Ô] & i).Value = [Ô][Ô]) And (Range([Ô]A[Ô] & i).Value <> [Ô][Ô]) Then
Range([Ô]K[Ô] & i).Value = Date
End If
If Range([Ô]J[Ô] & i).Value = [Ô][Ô] Then
Range([Ô]L[Ô] & i) = [Ô][Ô]
ElseIf Range([Ô]J[Ô] & i).Value = Range([Ô]K[Ô] & i).Value Then
Range([Ô]L[Ô] & i) = [Ô]OK[Ô]
Range([Ô]L[Ô] & i).Interior.ColorIndex = 10
ElseIf Range([Ô]J[Ô] & i).Value <> Range([Ô]K[Ô] & i).Value Then
data1s = Range([Ô]K[Ô] & i).Value
data2s = Range([Ô]J[Ô] & i).Value
[ô]resultado = DateDiff([Ô]d[Ô], data2s, data1s)
datalimite = data2s + 3
[ô]WeekdayName (datalimite)
If data1s < datalimite Then
Range([Ô]L[Ô] & i) = [Ô]OK[Ô]
Range([Ô]L[Ô] & i).Interior.ColorIndex = 10
ElseIf datalimite = data1s Then
Range([Ô]L[Ô] & i) = [Ô]Alerta[Ô]
Range([Ô]L[Ô] & i).Interior.ColorIndex = 6
Else
Range([Ô]L[Ô] & i) = [Ô]Critico[Ô]
Range([Ô]L[Ô] & i).Interior.ColorIndex = 3
End If
End If
i = i + 1
Loop Until i = 1000
tenho seguinte problema preciso comparar datas e utilizar o critério de 3 dias uteis tendo então que desconsiderar o final de semana.
Segue abaixo trecho do codigo
i = 5
Do
[ô]se existir uma célula vazia preenche com a data de hoje
If (Range([Ô]K[Ô] & i).Value = [Ô][Ô]) And (Range([Ô]A[Ô] & i).Value <> [Ô][Ô]) Then
Range([Ô]K[Ô] & i).Value = Date
End If
If Range([Ô]J[Ô] & i).Value = [Ô][Ô] Then
Range([Ô]L[Ô] & i) = [Ô][Ô]
ElseIf Range([Ô]J[Ô] & i).Value = Range([Ô]K[Ô] & i).Value Then
Range([Ô]L[Ô] & i) = [Ô]OK[Ô]
Range([Ô]L[Ô] & i).Interior.ColorIndex = 10
ElseIf Range([Ô]J[Ô] & i).Value <> Range([Ô]K[Ô] & i).Value Then
data1s = Range([Ô]K[Ô] & i).Value
data2s = Range([Ô]J[Ô] & i).Value
[ô]resultado = DateDiff([Ô]d[Ô], data2s, data1s)
datalimite = data2s + 3
[ô]WeekdayName (datalimite)
If data1s < datalimite Then
Range([Ô]L[Ô] & i) = [Ô]OK[Ô]
Range([Ô]L[Ô] & i).Interior.ColorIndex = 10
ElseIf datalimite = data1s Then
Range([Ô]L[Ô] & i) = [Ô]Alerta[Ô]
Range([Ô]L[Ô] & i).Interior.ColorIndex = 6
Else
Range([Ô]L[Ô] & i) = [Ô]Critico[Ô]
Range([Ô]L[Ô] & i).Interior.ColorIndex = 3
End If
End If
i = i + 1
Loop Until i = 1000
não entendi direito mas para desconsiderar o final de semana, você utiliza o Weekday desta forma
If Weekday(suadata) <> 7 Or Weekday(suadata) <> 1 then
acrecenta o dia util, ou o que vc quizer
end if
o if acima desconsidera os finais de semana, sendo que por padrão a semana começa no domingo então domingo =1, segunda =2, terça =3, quarta = 4, quinta =5, sexta = 6, sabado = 7, reparou agora porque dos nomes dos dias da semana.
If Weekday(suadata) <> 7 Or Weekday(suadata) <> 1 then
acrecenta o dia util, ou o que vc quizer
end if
o if acima desconsidera os finais de semana, sendo que por padrão a semana começa no domingo então domingo =1, segunda =2, terça =3, quarta = 4, quinta =5, sexta = 6, sabado = 7, reparou agora porque dos nomes dos dias da semana.
Esquecendo Excel e falando de conceito...
Vai gerar:
Entre 6/1/1975 e 2/3/1975 existem 40 dias uteis
Como está em um collection basta iterar na collection para obter os dias um-a-um
Sub Teste()
Dim dIni As Date
Dim dFim As Date
Dim dLoop As Date
Dim COL As New Collection
dIni = [Ô]06/01/1975[Ô]
dFim = [Ô]02/03/1975[Ô]
dLoop = dIni
Do
Debug.Print dLoop
dLoop = DateAdd([Ô]d[Ô], 1, dLoop)
If Weekday(dLoop) = vbSunday Or Weekday(dLoop) = vbSaturday Then
[ô]fim de semana
Else
COL.Add dLoop
End If
If dLoop > dFim Then Exit Do
Loop
Debug.Print [Ô]Entre [Ô] & dIni & [Ô] e [Ô] & dFim & [Ô] existem [Ô] & COL.Count & [Ô] dias uteis[Ô]
End Sub
Vai gerar:
Entre 6/1/1975 e 2/3/1975 existem 40 dias uteis
Como está em um collection basta iterar na collection para obter os dias um-a-um
Gostaria de Agradecer
As dicas que vcs deram ajudaram bastante
Funcionou Certinho
Valew Mesmo.
As dicas que vcs deram ajudaram bastante
Funcionou Certinho
Valew Mesmo.
Tópico encerrado , respostas não são mais permitidas