Jeg foreslår at du laver en brugerdefineret function.
Den skal fodres med et par input, som den så beregner på og returnerer en værdi.
jeg ka se at vi får brug for følgende input:
1. den dato der spørges på
2. mødetidspunkt
3. gå-hjemtidspunkt
4. evt. en værdi der fortæller om det er en skæv helligdag eller ej. (hvis ikke vi selv skal beregene det i en separat function)
Har du allerede kendskab til VBA-programmering (VBA= Visual Basic for Applications)?
VBA skal ikke forveksles med programmeringssproget Visual Basic.
Jeg har lavet den første spæde start til en brugerdefineret function til at beregne tillæg.
-----VBA-Kode-----
Function AdditionalPay(Requestdate As Date, MeetTime As Date, HomeTime As Date)
' function skal teste om MeetTime til Hometime udløser noget tillæg
AdditionalPay = 0 ' sætter defaultværdi til 0 , så function returenerer 0 hvis der ikke blev fundet nogen tillæg på den aktuelle foresørgsels-dag
If MeetTime > HomeTime Then ' hvis mødetidspunkt er højere en gå-hjem tidspunkt
MeetDateTime = Requestdate + MeetTime
homeDateTime = Requestdate + 1 + HomeTime ' Requestdate + 1 fordi det dato har skiftet når medarbejder går hjem
WorkHours = DateDiff("h", MeetDateTime, homeDateTime)
AdditionalPay = "Nattevagt " & WorkHours & " timer"
Else
MeetDateTime = Requestdate + MeetTime
homeDateTime = Requestdate + HomeTime
WorkHours = DateDiff("h", MeetDateTime, homeDateTime)
AdditionalPay = "Dagvagt/aftenvagt " & WorkHours & " timer"
End If
End Function
-----/VBA-Kode-----
Som functionen er nu er den ikke så brugbar andet end testformål - vi kan se at den beregner på de indtastede tider.
Som du ser, så er den endnu holdt helt simpel. indeholder kun en enkelt if-sætning, og der skal sammensættes en hel række if-sætninger til at tjekke for alle de mulige scenarier. Det kan godt blive lidt langhåret, men vigtigst af alt er at der bliver spurgt i den rigtige rækkefølge i if sætningerne, for der hvor der først er "Bingo" bliver valgt, og så går den evt. ikke videre til alle de andre mulige scenarier...
Hvis du hvor du gør det så kopier koden ind i et modul, og så kan du kalde functionen AdditionalPay på samme måde som du gør med alle andre excel-funktioner.
Hvis ikke du ved hvor vba-koden skal kopieres ind så hjælper jeg gerne yderligere.