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.
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord