Ir para conteúdo
Fórum Script Brasil
  • 0

Quantidade Determinado Dia Da Semana Entre Datas


Guest Aline Alcantara

Pergunta

Guest Aline Alcantara

Olá Pessoal,

Preciso de ajuda para solução de uma fórmula, preciso fazer o cálculo de horas trabalhadas entre duas datas, até aí simples, o problema é que preciso atribuir de segunda a quinta-feira 9 horas, e para a sexta-feira 8 horas! Eis o meu problema como identifico o dia da semana entre um range de datas??

Minha tabela possui um intervalo de datas diferente para cada "item" (linha) da minha tabela.

A função dia.da.semana é válida somente para uma data e não para um intervalo de datas!

Conto com a ajuda de vocês....

Att.

Aline Alcanatara

aralcantara@pop.com.br wink.gif

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

Olá Pessoal,

Preciso de ajuda para solução de uma fórmula, preciso fazer o cálculo de horas trabalhadas entre duas datas, até aí simples, o problema é que preciso atribuir de segunda a quinta-feira 9 horas, e para a sexta-feira 8 horas! Eis o meu problema como identifico o dia da semana entre um range de datas??

Minha tabela possui um intervalo de datas diferente para cada "item" (linha) da minha tabela.

A função dia.da.semana é válida somente para uma data e não para um intervalo de datas!

Conto com a ajuda de vocês....

Att.

Aline Alcanatara

aralcantara@pop.com.br wink.gif

Olá Aline,

você poderia colocar mais ou menos como que estaria organizado esses dados na sua planilha??, o que tem em cada coluna??

Link para o comentário
Compartilhar em outros sites

  • 0
Guest - Aline Alcantara -

Lisandro,

Os dados estão organizados como abaixo, nome do funcionário, data inicial e data final de onde preciso extrair qtde de horas trabalhadas, excluindo finais de semana e feriados, sem esquecer que a carga semanal é 44 horas, onde seg. a qui. 9 horas e sexta 8 horas, que é justamente o problema, tenho cerca de 15 mil registros para calcular, agradeço a atenção prestada...

Nome . . . .Data_Inicial . . . .Data_Final . . . .Setor . . . .Qtde_Horas

Maria . . . .04/10/2004 . . . .13/12/2004 . . . .2 . . . . . . . 176

João . . . . 31/08/2004 . . . .31/12/2004 . . . .3 . . . . . . . 160

Jose . . . . 20/10/2003 . . . .30/01/2005 . . . .2 . . . . . . . 176

Betânia . . 02/08/2004 . . . .31/01/2005 . . . .2 . . . . . . . 16

Joana . . . 19/10/2004 . . . .30/11/2004 . . . .1 . . . . . . . 152

Será que existe alguma fórmula que posso aplicar ou função,

Obrigada,

Aline Alcantara wink.gif

Link para o comentário
Compartilhar em outros sites

  • 0

Lisandro,

    Os dados estão organizados como abaixo, nome do funcionário, data inicial e data final de onde preciso extrair qtde de horas trabalhadas, excluindo finais de semana e feriados, sem esquecer que a carga semanal é 44 horas, onde seg. a qui. 9 horas e sexta 8 horas, que é justamente o problema,  tenho cerca de 15 mil registros para calcular, agradeço a atenção prestada...

Nome . . . .Data_Inicial . . . .Data_Final . . . .Setor . . . .Qtde_Horas

Maria . . . .04/10/2004 . . . .13/12/2004 . . . .2 . . . . . . . 176

João . . . . 31/08/2004 . . . .31/12/2004 . . . .3 . . . . . . . 160

Jose . . . . 20/10/2003 . . . .30/01/2005 . . . .2 . . . . . . . 176

Betânia . . 02/08/2004 . . . .31/01/2005 . . . .2 . . . . . . . 16

Joana . . . 19/10/2004 . . . .30/11/2004 . . . .1 . . . . . . . 152

Será que existe alguma fórmula que posso aplicar ou função,

Obrigada,

Aline Alcantara wink.gif

Aline utilizando VBA dá pra fazer sem problema

Veja:

-Abra a planilha e vá em Ferramentas/macros/editor do visual basic

-Clique no menu Inserir / módulo e cole esse Código

Sub lis()

Dim l, dia As Integer

l = 2

dtini = Range("B" & l).Value

dtfim = Range("C" & l).Value

While Range("a" & l).Value <> ""

dtini = Range("B" & l).Value

dtfim = Range("C" & l).Value

While dtini <= dtfim

dia = Weekday(dtini, vbMonday)

If dia = 6 Or dia = 7 Then

qtd = qtd + 0

ElseIf dia = 5 Then

qtd = qtd + 8

Else

qtd = qtd + 9

End If

dtini = dtini + 1

Wend

Range("E" & l).Value = qtd

l = l + 1

qtd = 0

Wend

End Sub

-Agora feche o editor do Visual Basic

-Vá em exibir /barras de ferramentas / formulario

-Procure na barra de ferramentas o "Botão", clique nele abra-o na planilha

-Aparecerá uma janela pedindo para você atribuir macro, clique em lis / OK

Pronto, só que para funcionar certinho o nome deve estar na celula A1, a dataini na celula B1...

Eu testei e funcionou, tente aí, qualquer coisa retorne

wink.gif

Link para o comentário
Compartilhar em outros sites

  • 0
Guest - Stralo -

Lisandro,

    Os dados estão organizados como abaixo, nome do funcionário, data inicial e data final de onde preciso extrair qtde de horas trabalhadas, excluindo finais de semana e feriados, sem esquecer que a carga semanal é 44 horas, onde seg. a qui. 9 horas e sexta 8 horas, que é justamente o problema,  tenho cerca de 15 mil registros para calcular, agradeço a atenção prestada...

Nome . . . .Data_Inicial . . . .Data_Final . . . .Setor . . . .Qtde_Horas

Maria . . . .04/10/2004 . . . .13/12/2004 . . . .2 . . . . . . . 176

João . . . . 31/08/2004 . . . .31/12/2004 . . . .3 . . . . . . . 160

Jose . . . . 20/10/2003 . . . .30/01/2005 . . . .2 . . . . . . . 176

Betânia . . 02/08/2004 . . . .31/01/2005 . . . .2 . . . . . . . 16

Joana . . . 19/10/2004 . . . .30/11/2004 . . . .1 . . . . . . . 152

Será que existe alguma fórmula que posso aplicar ou função,

Obrigada,

Aline Alcantara wink.gif

Aline utilizando VBA dá pra fazer belezinha

Veja:

-Abra a planilha e vá em Ferramentas/macros/editor do visual basic

-Clique no menu Inserir / módulo e cole esse Código

Sub lis()

Dim l, dia As Integer

l = 2

dtini = Range("B" & l).Value

dtfim = Range("C" & l).Value

While Range("a" & l).Value <> ""

dtini = Range("B" & l).Value

dtfim = Range("C" & l).Value

While dtini <= dtfim

dia = Weekday(dtini, vbMonday)

If dia = 6 Or dia = 7 Then

qtd = qtd + 0

ElseIf dia = 5 Then

qtd = qtd + 8

Else

qtd = qtd + 9

End If

dtini = dtini + 1

Wend

Range("E" & l).Value = qtd

l = l + 1

qtd = 0

Wend

End Sub

-Agora feche o editor do Visual Basic

-Vá em exibir /barras de ferramentas / formulario

-Procure na barra de ferramentas o "Botão", clique nele abra-o na planilha

-Aparecerá uma janela pedindo para você atribuir macro, clique em lis / OK

Pronto, só que para funcionar certinho o nome deve estar na celula A1, a dataini na celula B1...

Eu testei e funcionou, tente aí, qualquer coisa retorne

wink.gif

Como assim belezinha?

Ta tirando sarro??!!!!

Valeu...gostei do script

Link para o comentário
Compartilhar em outros sites

  • 0

Lisandro,

    Os dados estão organizados como abaixo, nome do funcionário, data inicial e data final de onde preciso extrair qtde de horas trabalhadas, excluindo finais de semana e feriados, sem esquecer que a carga semanal é 44 horas, onde seg. a qui. 9 horas e sexta 8 horas, que é justamente o problema,  tenho cerca de 15 mil registros para calcular, agradeço a atenção prestada...

Nome . . . .Data_Inicial . . . .Data_Final . . . .Setor . . . .Qtde_Horas

Maria . . . .04/10/2004 . . . .13/12/2004 . . . .2 . . . . . . . 176

João . . . . 31/08/2004 . . . .31/12/2004 . . . .3 . . . . . . . 160

Jose . . . . 20/10/2003 . . . .30/01/2005 . . . .2 . . . . . . . 176

Betânia . . 02/08/2004 . . . .31/01/2005 . . . .2 . . . . . . . 16

Joana . . . 19/10/2004 . . . .30/11/2004 . . . .1 . . . . . . . 152

Será que existe alguma fórmula que posso aplicar ou função,

Obrigada,

Aline Alcantara wink.gif

Aline utilizando VBA dá pra fazer belezinha

Veja:

-Abra a planilha e vá em Ferramentas/macros/editor do visual basic

-Clique no menu Inserir / módulo e cole esse Código

Sub lis()

Dim l, dia As Integer

l = 2

dtini = Range("B" & l).Value

dtfim = Range("C" & l).Value

While Range("a" & l).Value <> ""

dtini = Range("B" & l).Value

dtfim = Range("C" & l).Value

While dtini <= dtfim

dia = Weekday(dtini, vbMonday)

If dia = 6 Or dia = 7 Then

qtd = qtd + 0

ElseIf dia = 5 Then

qtd = qtd + 8

Else

qtd = qtd + 9

End If

dtini = dtini + 1

Wend

Range("E" & l).Value = qtd

l = l + 1

qtd = 0

Wend

End Sub

-Agora feche o editor do Visual Basic

-Vá em exibir /barras de ferramentas / formulario

-Procure na barra de ferramentas o "Botão", clique nele abra-o na planilha

-Aparecerá uma janela pedindo para você atribuir macro, clique em lis / OK

Pronto, só que para funcionar certinho o nome deve estar na celula A1, a dataini na celula B1...

Eu testei e funcionou, tente aí, qualquer coisa retorne

wink.gif

Você poderia explicar melhor o seu código?

Estou aprendendo vba e me interessei por esse programa.

grato

Link para o comentário
Compartilhar em outros sites

  • 0

Lisandro,

    Os dados estão organizados como abaixo, nome do funcionário, data inicial e data final de onde preciso extrair qtde de horas trabalhadas, excluindo finais de semana e feriados, sem esquecer que a carga semanal é 44 horas, onde seg. a qui. 9 horas e sexta 8 horas, que é justamente o problema,  tenho cerca de 15 mil registros para calcular, agradeço a atenção prestada...

Nome . . . .Data_Inicial . . . .Data_Final . . . .Setor . . . .Qtde_Horas

Maria . . . .04/10/2004 . . . .13/12/2004 . . . .2 . . . . . . . 176

João . . . . 31/08/2004 . . . .31/12/2004 . . . .3 . . . . . . . 160

Jose . . . . 20/10/2003 . . . .30/01/2005 . . . .2 . . . . . . . 176

Betânia . . 02/08/2004 . . . .31/01/2005 . . . .2 . . . . . . . 16

Joana . . . 19/10/2004 . . . .30/11/2004 . . . .1 . . . . . . . 152

Será que existe alguma fórmula que posso aplicar ou função,

Obrigada,

Aline Alcantara wink.gif

Aline utilizando VBA dá pra fazer belezinha

Veja:

-Abra a planilha e vá em Ferramentas/macros/editor do visual basic

-Clique no menu Inserir / módulo e cole esse Código

Sub lis()

Dim l, dia As Integer

l = 2

dtini = Range("B" & l).Value

dtfim = Range("C" & l).Value

While Range("a" & l).Value <> ""

dtini = Range("B" & l).Value

dtfim = Range("C" & l).Value

While dtini <= dtfim

dia = Weekday(dtini, vbMonday)

If dia = 6 Or dia = 7 Then

qtd = qtd + 0

ElseIf dia = 5 Then

qtd = qtd + 8

Else

qtd = qtd + 9

End If

dtini = dtini + 1

Wend

Range("E" & l).Value = qtd

l = l + 1

qtd = 0

Wend

End Sub

-Agora feche o editor do Visual Basic

-Vá em exibir /barras de ferramentas / formulario

-Procure na barra de ferramentas o "Botão", clique nele abra-o na planilha

-Aparecerá uma janela pedindo para você atribuir macro, clique em lis / OK

Pronto, só que para funcionar certinho o nome deve estar na celula A1, a dataini na celula B1...

Eu testei e funcionou, tente aí, qualquer coisa retorne

wink.gif

Você poderia explicar melhor o seu código?

Estou aprendendo vba e me interessei por esse programa.

grato

Olá stralo, ficou melhor o "sem problema" hehehe,

Primeiro eu crieu uma variavel l que represanta a linha na planilha e o l começa com 2 ou seja linha 2, depois eu criei duas variaveis, uma guardará a data inicial que está na coluna B e linha 2 ("b2") ou Range("b" & l).value, outra a data final. depois entra em um looping que diz enquanto o conteudo da celula a2 for diferente que vazio prossiga, ai entra-se em um outro loop que diz: enquanto a data inicial for menor que a data final faça: aí a variavel dia guarda o dia da semana em numero ex: 1 = segunda, 2 =terça..., pronto, depois só estou perguntando se o dia for 6 ou 7 ou seja Sab ou Dom a variavel qtd quarda o valor zero e assim por diante..., depois é exibido o valor da variavel qtd na celula Range("E" & l).Value

na coluna E e na linha abaixo dos valores.

beleza??

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      651,9k
×
×
  • Criar Novo...