Logo Hardware.com.br
Ederson L. Corrêa
Ederson L. C... Super Participante Registrado
1.1K Mensagens 0 Curtidas

[Resolvido] Cálculo de dias úteis de um mês sem utilizar Diatrabalho ou DiaTrabalhoTotal

#1 Por Ederson L. C... 11/12/2008 - 22:44
Pessoal,

Tenho uma planilha onde preciso calcular a quantidade de dias úteis de um determinado mês, porém como a versão do Office na empresa ainda é a XP, não tenho acesso as funções DIATRABALHO ou DIATRABALHOTOTAL.

Alguém conhece alguma maneira de efetuar esse cálculo sem utilizar essas funções?

Buscando no google encontrei a macro abaixo:

Public Function CalculaDiasUteis(DataIni, Datafinal) As Integer
Dim cont As Integer
Dim i As Variant
cont = 0
For i = DataIni To Datafinal
If Weekday(i) <> 1 And Weekday(i) <> 7 Then
cont = cont + 1
End If
Next i
CalculaDiasUteis = cont
End Function
Ela funciona bem, porém somente considera dias não úteis sábados e domingos. Gostaria de abater também os feriados durante a semana.

Montei uma tabela com todos os feriados na coluna A e chamei o intervalo de Feriados.

Tentei alterar a macro conforme abaixo, porém como não manjo nada de macro não funcionou e retorna sempre #VALOR!.

Public Function CalculaDiasUteis(DataIni, Datafinal, Feriado) As Integer
Dim cont As Integer
Dim i As Variant
cont = 0
For i = DataIni To Datafinal
If Weekday(i) <> 1 And Weekday(i) <> 7 Then
If IsError(Application.WorksheetFunction.VLookup(i, Feriado, 1, False)) = True Then
cont = cont + 1
End If
End If
Next i
CalculaDiasUteis = cont
End Function
Alguém pode me dizer o que estou fazendo de errado? Alguma sugestão de como acerto a macro?

Muito Obrigado,
Ederson.
gvl
gvl Super Zumbi Registrado
9.4K Mensagens 576 Curtidas
#3 Por gvl
13/12/2008 - 13:07
Ederson, tudo bem ?

a versão do Office na empresa ainda é a XP, não tenho acesso as funções DIATRABALHO ou DIATRABALHOTOTAL.


Pesquisando na net descobrir que tem como inportar este recurso de outra versão do office. Aqui uso o excel 2003 e quando vi seu post tentei de tudo que foi jeito e nada, então pesquisando achei um link da MS mencionando o fato acima.Peguei o arquivo na empresa pois lá tem o office 97. Testei aqui e deu certo. Veja as imagens abaixo. Para importar o suplemento. :::
Abra o excel menu Ferramentas->Suplementos->Procurar, e indique o caminho do arquivo Analys32. [ este arquivo fica em c:\arquivos de programas\microsoft\offiice\Bibliote\Analise. ] depois de importado a tela de suplementos ficou assim:
Imagem

Fiz um teste aqui, usando o intervalo de 01/12 a 30/12 e coloquei os dias 25,26,28 e 29/12 como sendo feriados, apenas para teste. Veja abaixo:
Imagem
arkGreen">Jesus é o caminho, a verdade e a vida. feliz.png
Ederson L. Corrêa
Ederson L. C... Super Participante Registrado
1.1K Mensagens 0 Curtidas
#4 Por Ederson L. C...
13/12/2008 - 14:54
gvl, beleza?

Eu havia tentado essa opção pegando o arquivo do 2007 (versão que uso em casa) e jogando no XP do trampo, porém são incompativeis e o Excel nem abriu quando fiz isso. Dava um erro sobre o arquivo alterado.

Vou tentar obter o arquivo que vem com o 2003 e ver se funciona no XP, porém preciso de uma outra solução.

A planilha que estou montando vai ser distribuida a vários usuários e muitos não terão acesso para alterar a pasta onde o Office está instalado.

Mesmo assim obrigado pela dica.

Ederson.
Ederson L. Corrêa
Ederson L. C... Super Participante Registrado
1.1K Mensagens 0 Curtidas
#6 Por Ederson L. C...
14/12/2008 - 00:01
gvl,

Eu já havia lido este site. Inclusive foi lá que achei a macro que estou tentando alterar.

Bom, consegui dar um jeito aqui. Não ficou limpo e nem bonito, mas funcionará em qualquer versão do Excel.

Caso interesse a mais alguém, vou descrever o que fiz:

1. Deixei a macro como a original abaixo:

Public Function CalculaDiasUteis(DataIni, Datafinal) As Integer
Dim cont As Integer
Dim i As Variant
cont = 0
For i = DataIni To Datafinal
If Weekday(i) <> 1 And Weekday(i) <> 7 Then
cont = cont + 1
End If
Next i
CalculaDiasUteis = cont
End Function
2.Na tabela de feriados inclui uma coluna a mais onde atribuo 1 para os feriados de segunda a sexta e 0 para os feriados que caem aos sábados;

3. Para saber o total de dias úteis de um período utilizei a fórmula:
=CalculaDiasUteis(Data_Inicial; Data_Final) - SOMASE(Lista_de_Feriados;">=Data_Inicial";Coluna_com_zeros_e_uns) + SOMASE(Lista_Feriados;">Data_Final";Coluna_com_zeros_e_uns)
Na chamada eu poderia ter utilizado a função SOMASES para substituir os dois SOMASE, porém ela não existe no Excel XP.

Abraços,
Ederson.
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal