Det enklaste hade varit om Starttid och Sluttid hade innehållit Datum också. Men låt oss anta att en sluttid som är mindre än starttiden = dygnet efter.
Om formlerna skall gå att läsa måste du skapa 2 hjälpkolumner för att göra formlerna kortare. Start och Stop som inkluderar datumen
Start är:
=[@Datum]+[@Startid]
Slut är:
=OM([@Sluttid]<[@Startid];[@Datum]+1+[@Sluttid];[@Datum]+[@Sluttid])
Du kan dölja hjälp-kolumnerna om du tycker att de stör.
***************************************************************
vi måste nästan börja bakifrån med att definiera helgtiden.
Så här får du reda på när veckans lördag börjar:
=HELTAL(6-VECKODAG([@Datum];2)+[@Datum])
och söndagen slutar/nästa veckas månad börjar
=HELTAL(8-VECKODAG([@Datum];2)+[@Datum])
Jag misstänker starkt att helg-avtalet gäller fram till måndag morgon. Men det har du inte skrivit ut så det får du fixa själv.
*************************************************************
Du kan börja med: Övertid C, helger:
Den perioden slutar med det högsta värdet av Stop eller midnatt - söndag till måndag
=MIN([@Stop];HELTAL(8-VECKODAG([@Datum];2)+[@Datum]))
Och den startar med det högsta värdet av start eller midnatt fredag till lördag
=MAX([@Start];HELTAL(6-VECKODAG([@Datum];2)+[@Datum]))
Och formeln blir:
=MIN([@Stop];HELTAL(8-VECKODAG([@Datum];2)+[@Datum]))-MAX([@Start];HELTAL(6-VECKODAG([@Datum];2)+[@Datum]))
Det ger ett negativt tal om helgen inte ingår i arbetstiden
Och då kan du säga att alla negativa värden skall ersätta av 0 med hjälp av en max-sats:
=MAX(0;MIN([@Stop];HELTAL(8-VECKODAG([@Datum];2)+[@Datum]))-MAX([@Start];HELTAL(6-VECKODAG([@Datum];2)+[@Datum])))
Jättesmidigt, not.
*******************************************************************************************
Övertid C: 200 (100% efter kl 22:00)
Sen måste du få till övertiden mellan 22:00 och 07:00 dygnet efter (eller liknande, jag antar att nattskiftet inte slutar vid midnatt?) men utesluta sådant som hamnar på helgen.
Så tiden slutar vid det minsta värdet av stop, 07:00 dygnet efter eller midnatt mellan fredag/lördag (då är det ju helg). Dvs
=MIN([@Stop];HELTAL(6-VECKODAG([@Datum];2)+[@Datum]);[@Datum]+1+"07:00")
Och den startar vid det största värdet av Start, den här veckans måndag morgon eller kl 22:00
=MAX([@Start];HELTAL(8-VECKODAG([@Datum];2)+[@Datum])-7;[@Datum]+"22:00")
subtrahera och omvandla till 0 om negativt
=MAX(0;MIN([@Stop];HELTAL(6-VECKODAG([@Datum];2)+[@Datum]);[@Datum]+1+"07:00")-MAX([@Start];HELTAL(8-VECKODAG([@Datum];2)+[@Datum])-7;[@Datum]+"22:00"))
***********************************************************************************************
Övertid B: 170 (70% efter kl 19:00)
Dvs Mellan 19:00 och 22:00. Om det inte är helg.
Då slutar perioden vid det minsta värdet av Sluttid och 22:00 eller midnatt mellan fredag/lördag.
=MIN([@Stop];[@Datum]+"22:00";HELTAL(6-VECKODAG([@Datum];2)+[@Datum]))
Och den startar vid det högsta värdet av start och 19:00
=MAX([@Start];[@Datum]+"19:00")
subtrahera och omvandla till 0 om negativt
=MAX(0;MIN([@Stop];[@Datum]+"22:00";HELTAL(6-VECKODAG([@Datum];2)+[@Datum]))-MAX([@Start];[@Datum]+"19:00"))
******************************************************************************************
Övertid A: 150 (50% efter kl 17:00)
Dvs Mellan 17:00 och 19:00. Om det inte är helg.
Tiden slutar vid det minsta värdet av stop, 19:00 eller midnatt mellan fredag/lördag.
=MIN([@Stop];[@Datum]+"19:00";HELTAL(6-VECKODAG([@Datum];2)+[@Datum]))
Och den startar vid det högsta värdet av start och 17:00
=MAX([@Start];[@Datum]+"17:00")
subtrahera och omvandla till 0 om negativt
=MAX(0;MIN([@Stop];[@Datum]+"19:00";HELTAL(6-VECKODAG([@Datum];2)+[@Datum]))-MAX([@Start];[@Datum]+"17:00"))
***************************************************************
Normaltiden borde bli rätt så här:
=MAX(0;MIN([@Stop];[@Datum]+"17:00";HELTAL(6-VECKODAG([@Datum];2)+[@Datum]))-MAX([@Start];[@Datum]+"07:00"))-[@Lunch]