Página 1 de 1

Calculo de dias uteis

Enviado: 21 Abr 2022 às 14:37
por JCabral
Boa tarde

Gostaria de ter a vossa ajuda para o calculo de dias uteis, por cada mês, atendendo a determinados intervalos de datas.
Assim, na aba "BD" tenho AUSENCIAS e respetiva data [AL], CAMPANHAS e respetivas datas [AP:AQ] e AVARIAS e respetivas datas [AX:AY].

Na aba "CALCULOS" tenho os cálculos que preciso (os valores que estão lá são os expectáveis em função dos dados em BD) ou seja os dias uteis por mês, atendendo também à lista de feriados.
De notar que nenhum dos ranges em BD são fixos, ou seja, conforme vou tendo AUSENCIAS/CAMPANHAS/AVARIAS vou acrescentado os intervalos de datas.

A solução para as CAMPANHAS e AVARIAS será a mesma.

NOTA: Tenho preferência por cálculos sem colunas auxiliares

Obrigado
Jorge

Re: Calculo de dias uteis

Enviado: 21 Abr 2022 às 18:53
por babdallas
Código: Selecionar todos
=DIATRABALHOTOTAL(AP2;AQ2;FERIADOS!$C$2:$C$18)

Re: Calculo de dias uteis

Enviado: 22 Abr 2022 às 08:05
por osvaldomp
Olá, @JCabral .

Experimente esta matricial em CALCULOS!TE3 e arraste para a direita.

=SOMA(SE(DIATRABALHO(+BD!$AL2:$AL5-1;1;FERIADOS!$C2:$C18)=BD!$AL2:$AL5;SE(MÊS(BD!$AL2:$AL5)=TE2;1)))

A outra fórmula é bem mais trabalhosa, vou tentar algo aqui.

Re: Calculo de dias uteis

Enviado: 22 Abr 2022 às 09:59
por JCabral
@babdallas,
Obrigado pela sua solução, mas a minha duvida não é relativamente ao calculo dos dias trabalhados na aba BD, mas sim calcular os valores que estão na aba CALCULOS, ou seja o total de dias uteis nas ausências e por mês, o total de dias uteis nas campanhas e por mês e o mesmo para as avarias.

@osvaldomp,
Obrigado pela sua solução, funciona na perfeição para o caso especifico, mas é possível ter essa formula mais genérica, é que como refiro os intervalos não são fixos. Não sei se com ranges nomeados funcionará já que quando o processo começa todos esses valores são zero ou seja não tenho ausências, não tenho campanhas e não tenho avarias, por isso não sei se um range nomeado se não tiver elementos não dá erro?
Fico a aguardar a outra solução, obrigado

Editado:
Estive a testar e assim resolve a questão do intervalo ser dinâmico:
Código: Selecionar todos
=SOMA(SE(+DIATRABALHO(DESLOCAMENTO(BD!$AL$2;;;CONTAR.VAL(BD!$AL:$AL)-1;1)-1;1;FERIADOS!$C2:$C18)=DESLOCAMENTO(BD!$AL$2;;;CONTAR.VAL(BD!$AL:$AL)-1;1);SE(MÊS(DESLOCAMENTO(BD!$AL$2;;;CONTAR.VAL(BD!$AL:$AL)-1;1))=TE2;1)))

Re: Calculo de dias uteis

Enviado: 24 Abr 2022 às 15:48
por babdallas
Usei objeto tabela para facilitar. Considerei que não é Office 365, pois se fosse a complexidade diminuiria um pouco.

TOTAL DIAS UTEIS AUSENCIAS
Código: Selecionar todos
=SOMARPRODUTO(--(MÊS(tbAusencias[DATA])=TE$2))
TOTAL DIAS UTEIS CAMPANHAS
Código: Selecionar todos
=SOMARPRODUTO((TRANSPOR(LIN(INDIRETO(DATA.VALOR(TT2&"/"&$TD$2)&":"&FIMMÊS(DATA.VALOR(TT2&"/"&$TD$2);0))))>=tbDiasUteis[DATAi])*(TRANSPOR(LIN(INDIRETO(DATA.VALOR(TT2&"/"&$TD$2)&":"&FIMMÊS(DATA.VALOR(TT2&"/"&$TD$2);0))))<=tbDiasUteis[DATAf])*(DIA.DA.SEMANA(TRANSPOR(LIN(INDIRETO(DATA.VALOR(TT2&"/"&$TD$2)&":"&FIMMÊS(DATA.VALOR(TT2&"/"&$TD$2);0))));11)<6)*(1-CONT.SE(FERIADOS!$C$2:$C$18;TRANSPOR(LIN(INDIRETO(DATA.VALOR(TT2&"/"&$TD$2)&":"&FIMMÊS(DATA.VALOR(TT2&"/"&$TD$2);0)))))))
TOTAL DIAS UTEIS AVARIAS
Código: Selecionar todos
=SOMARPRODUTO((TRANSPOR(LIN(INDIRETO(DATA.VALOR(UI2&"/"&$TD$2)&":"&FIMMÊS(DATA.VALOR(UI2&"/"&$TD$2);0))))>=tbAvarias[DATAi])*(TRANSPOR(LIN(INDIRETO(DATA.VALOR(UI2&"/"&$TD$2)&":"&FIMMÊS(DATA.VALOR(UI2&"/"&$TD$2);0))))<=tbAvarias[DATAf])*(DIA.DA.SEMANA(TRANSPOR(LIN(INDIRETO(DATA.VALOR(UI2&"/"&$TD$2)&":"&FIMMÊS(DATA.VALOR(UI2&"/"&$TD$2);0))));11)<6)*(1-CONT.SE(FERIADOS!$C$2:$C$18;TRANSPOR(LIN(INDIRETO(DATA.VALOR(UI2&"/"&$TD$2)&":"&FIMMÊS(DATA.VALOR(UI2&"/"&$TD$2);0)))))))

Re: Calculo de dias uteis

Enviado: 24 Abr 2022 às 21:07
por JCabral
@babdallas,

Obrigado pela sua solução.
O Office é o 365, quando diz que a complexidade diminuiria um pouco, está a dizer que não teria que usar o objecto tabela? Seria fantástico.

Se for possível gostaria dessa solução do Office365.

Obrigado
Jorge

Re: Calculo de dias uteis

Enviado: 25 Abr 2022 às 22:43
por babdallas
TOTAL DIAS UTEIS CAMPANHAS
Código: Selecionar todos
=LET(dtIni;DATA.VALOR(TT2&"/"&$TD$2);dtFim;FIMMÊS(DATA.VALOR(TT2&"/"&$TD$2);0);ListaDatas;TRANSPOR(SEQUÊNCIA(dtFim-dtIni+1;;dtIni));SOMARPRODUTO((ListaDatas>=tbDiasUteis[DATAi])*(ListaDatas<=tbDiasUteis[DATAf])*(DIA.DA.SEMANA(ListaDatas;11)<6)*(1-CONT.SE(FERIADOS!$C$2:$C$18;ListaDatas))))

TOTAL DIAS UTEIS AVARIAS
Código: Selecionar todos
=LET(dtIni;DATA.VALOR(UI2&"/"&$TD$2);dtFim;FIMMÊS(DATA.VALOR(UI2&"/"&$TD$2);0);ListaDatas;TRANSPOR(SEQUÊNCIA(dtFim-dtIni+1;;dtIni));SOMARPRODUTO((ListaDatas>=tbAvarias[DATAi])*(ListaDatas<=tbAvarias[DATAf])*(DIA.DA.SEMANA(ListaDatas;11)<6)*(1-CONT.SE(FERIADOS!$C$2:$C$18;ListaDatas))))

Re: Calculo de dias uteis

Enviado: 26 Abr 2022 às 06:41
por JCabral
@babdallas,

Muito obrigado, vou tentar com essa solução ver se dá para não trabalhar com o objeto tabela.

Re: Calculo de dias uteis

Enviado: 26 Abr 2022 às 17:06
por babdallas
Qual o motivo de não usar o objeto Tabela?

Re: Calculo de dias uteis

Enviado: 27 Abr 2022 às 06:33
por JCabral
babdallas escreveu: 26 Abr 2022 às 17:06 Qual o motivo de não usar o objeto Tabela?
É que já tenho a ADIÇÃO, EDITAR, APAGAR dos dados feita sem ser em tabela e não queria mexer nessa parte do código.