Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Dúvidas sobre cálculos, funções simples e aninhadas, fórmulas matriciais, etc.
  • Avatar do usuário
Avatar do usuário
Por JCabral
Avatar
#70382
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
Você não está autorizado a ver ou baixar esse anexo.
Por babdallas
#70390
Código: Selecionar todos
=DIATRABALHOTOTAL(AP2;AQ2;FERIADOS!$C$2:$C$18)
Você não está autorizado a ver ou baixar esse anexo.
Por osvaldomp
#70397
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.
Avatar do usuário
Por JCabral
Avatar
#70401
@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)))
Por babdallas
#70417
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)))))))
Você não está autorizado a ver ou baixar esse anexo.
Avatar do usuário
Por JCabral
Avatar
#70419
@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
Por babdallas
#70436
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))))
Você não está autorizado a ver ou baixar esse anexo.
Por babdallas
#70458
Qual o motivo de não usar o objeto Tabela?
Avatar do usuário
Por JCabral
Avatar
#70464
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.

=SE(MÊS(A1)&lt;7;&quot;1º sem&a[…]

Bom Dia Senhores. Tenho uma macro que preciso dei[…]

Free relationships without drama and obligations. […]

Girar Imagem e Zoom

Boa noite Teria alguma forma de dar um &quot;[…]

Valeu. Muito Obrigado!!!!!!!!

Pessoal, Ao clicar no botão Copiar (Guia C[…]

Procv com serro em vba

Resolvido

Bom dia, pessoal! com a data de nascimento e data […]

Estamos migrando para uma comunidade no Discord