Another Timesheet Spreadsheet - Odd Union Rules

type88

New Member
Joined
Sep 30, 2005
Messages
33
Hello everyone!

Years ago with your help I created a well functioning timesheet calculator for a small business. I am back at it again making some changes and have hit a road block.
I would like to enter only the start-time and end-time and to have the calculations sort themselves out. This is ordinarily quite easy, but it is complicated by a few local regulations:
1. Different times of day are paid differently than others, these times vary but are set in a pair of fields in the spreadsheet.
2. Weekends are paid at a different rate.
3. Holidays are paid into two different rate categories with a 45 and 90% premium.

I have all of the above sorted out with the code below (the start and end times are the $I$57 and $I$58 field).
The only trouble is that my overnight shift is broken. The average shift starts at 11pm and goes to 7am. In an ideal world the total time would be divided into the evening rate (from 11pm to midnight) and the morning rate (midnight to 7am).

Because of the way I have done the logic for the daytime stuff, I am having a hard time fixing the night stuff, perhaps you guys can offer up a solution. This is what I have:


Excel 2012
ABCDEFGHIJK
824:00 til 8:00 @ 45% lag8:00 til 17:0017:00 til 24:00 33% lagNtur/helgarvinna 45% lagArir frdagar 45% lagStrhtardagar 90% lag
9DateDayTime-InTime-OutDaily Total HrsMorningDaytimeEveningWeekendHolidayHigh Holiday
1021.04.13Sun7:00 AM3:00 PM8:000:00 0:008:00  
1122.04.13Mon7:00 AM3:00 PM8:001:007:000:00   
MAY
Cell Formulas
RangeFormula
E10=IF(D10="","",(D10-C10+(D10)))
E11=IF(D11="","",(D11-C11+(D11)))
F10=IF(OR($E10=""),"",IF(NETWORKDAYS($A10,$A10,AllHolidayDates), IF(OR($C10<$I$57,$C10<$I$57),($I$57-$C10+($I$57<$C10)),"0:00"),"0:00"))
F11=IF(OR($E11=""),"",IF(NETWORKDAYS($A11,$A11,AllHolidayDates), IF(OR($C11<$I$57,$C11<$I$57),($I$57-$C11+($I$57<$C11)),"0:00"),"0:00"))
G10=IF(NETWORKDAYS($A10,$A10,AllHolidayDates), IF(D10="", "", (E10-H10-F10)),"")
G11=IF(NETWORKDAYS($A11,$A11,AllHolidayDates), IF(D11="", "", (E11-H11-F11)),"")
H10=IF(OR($E10=""),"",IF(NETWORKDAYS($A10,$A10,AllHolidayDates), IF(OR($D10>$I$58,$D10<$I$57),($D10-$I$58+($D10<$I$58)),"0:00"),"0:00"))
H11=IF(OR($E11=""),"",IF(NETWORKDAYS($A11,$A11,AllHolidayDates), IF(OR($D11>$I$58,$D11<$I$57),($D11-$I$58+($D11<$I$58)),"0:00"),"0:00"))
I10=IF(AND(J10="",G10="", K10=""),E10,"")
I11=IF(AND(J11="",G11="", K11=""),E11,"")
J10=IF(ISNA(IF(MATCH(A10,HolidayDates,0)>0,E10,"")),"",IF(MATCH(A10,HolidayDates,0)>0,E10,""))
J11=IF(ISNA(IF(MATCH(A11,HolidayDates,0)>0,E11,"")),"",IF(MATCH(A11,HolidayDates,0)>0,E11,""))
K10=IF(ISNA(IF(MATCH(A10,HighHolidayDates,0)>0,E10,"")),"",IF(MATCH(A10,HighHolidayDates,0)>0,E10,""))
K11=IF(ISNA(IF(MATCH(A11,HighHolidayDates,0)>0,E11,"")),"",IF(MATCH(A11,HighHolidayDates,0)>0,E11,""))
B10=IF(A10="","",A10)
B11=IF(A11="","",A11)
Named Ranges
NameRefers ToCells
AllHolidayDates=Criteria!$B$2:$B$30
HighHolidayDates=Criteria!$B$15:$B$30
HolidayDates=Criteria!$B$2:$B$14
 

Excel Facts

What is =ROMAN(40) in Excel?
The Roman numeral for 40 is XL. Bill "MrExcel" Jelen's 40th book was called MrExcel XL.
Perhaps military time and an IF statement for overnight shifts?
Conceptually: Evening =IF(TimeOut<TimeIn,"24:00",TimeIn)-MAX(TimeIn,"17:00"), and Morning =MIN(TimeOut,"08:00")-IF(TimeOut<TimeIn,"00:00",TimeIn). So for your scenario of an 11PM-7AM (23:00-07:00) shift, you would get: Evening ="24:00"-"23:00" = 1 hr, and Morning ="07:00"-"00:00" = 7 hr.
Hope something like that works for you. Good luck.
 
Last edited:
Upvote 0
Sorry keeps cutting off, I meant...

Perhaps military time and an IF statement for overnight shifts? Conceptually: Evening =IF(TimeOut((LESS THAN SYMBOL))TimeIn,"24:00",TimeIn)-MAX(TimeIn,"17:00"), and Morning =MIN(TimeOut,"08:00")-IF(TimeOut((LESS THAN SYMBOL))TimeIn,"00:00",TimeIn). So for your scenario of an 11PM-7AM (23:00-07:00) shift, you would get: Evening ="24:00"-"23:00" = 1 hr, and Morning ="07:00"-"00:00" = 7 hr.

Hope something like that works for you. Good luck.
 
Last edited:
Upvote 0
Judgepax,

Thanks for the tip, it is much much easier than the direction I was going in plus I learned a few basic techniques. Your solution works, BUT it only works for cases where the shift is actually an overnight shift. In cases where time in is less than the time out, the calculation for the evening slot returns ###### because it is negative. Naturally the current solution for the daytime hours gets mixed up as well since it continues to subtract a negative number.

For the life of me I cannot sort out how to resolve that error; though I suspect I am over thinking it. Since I am still testing for workday/holiday, here is what I have now:


Excel 2012
ABCDEFGHIJK
824:00 til 8:00 @ 45% lag8:00 til 17:0017:00 til 24:00 33% lagNtur/helgarvinna 45% lagArir frdagar 45% lagStrhtardagar 90% lag
9DateDayTime-InTime-OutDaily Total HrsMorningDaytimeEveningWeekendHolidayHigh Holiday
1021.04.13Sun2:00 AM9:00 AM7:00   7:00  
1122.04.13Mon3:00 AM10:00 AM7:005:0016:00############################   
1223.04.13Tue4:00 AM11:00 AM7:004:0016:00############################   
1324.04.13Wed5:00 AM12:00 PM7:003:0016:00############################   
1425.04.13Thu6:00 AM1:00 PM7:00    7:00 
1526.04.13Fri7:00 AM2:00 PM7:001:0016:00############################   
1627.04.13Sat8:00 AM3:00 PM7:00   7:00  
1728.04.13Sun9:00 AM4:00 PM7:00   7:00  
1829.04.13Mon10:00 AM5:00 PM7:00###############16:00############################   
MAY (2)
Cell Formulas
RangeFormula
E10=IF(D10="","",(D10-C10+(D10)))
E11=IF(D11="","",(D11-C11+(D11)))
E12=IF(D12="","",(D12-C12+(D12)))
E13=IF(D13="","",(D13-C13+(D13)))
E14=IF(D14="","",(D14-C14+(D14)))
E15=IF(D15="","",(D15-C15+(D15)))
E16=IF(D16="","",(D16-C16+(D16)))
E17=IF(D17="","",(D17-C17+(D17)))
E18=IF(D18="","",(D18-C18+(D18)))
F10=IF(OR($E10=""),"", IF(NETWORKDAYS($A10,$A10,AllHolidayDates), MIN(D10,"08:00")-IF(D10),""))
F11=IF(OR($E11=""),"", IF(NETWORKDAYS($A11,$A11,AllHolidayDates), MIN(D11,"08:00")-IF(D11),""))
F12=IF(OR($E12=""),"", IF(NETWORKDAYS($A12,$A12,AllHolidayDates), MIN(D12,"08:00")-IF(D12),""))
F13=IF(OR($E13=""),"", IF(NETWORKDAYS($A13,$A13,AllHolidayDates), MIN(D13,"08:00")-IF(D13),""))
F14=IF(OR($E14=""),"", IF(NETWORKDAYS($A14,$A14,AllHolidayDates), MIN(D14,"08:00")-IF(D14),""))
F15=IF(OR($E15=""),"", IF(NETWORKDAYS($A15,$A15,AllHolidayDates), MIN(D15,"08:00")-IF(D15),""))
F16=IF(OR($E16=""),"", IF(NETWORKDAYS($A16,$A16,AllHolidayDates), MIN(D16,"08:00")-IF(D16),""))
F17=IF(OR($E17=""),"", IF(NETWORKDAYS($A17,$A17,AllHolidayDates), MIN(D17,"08:00")-IF(D17),""))
F18=IF(OR($E18=""),"", IF(NETWORKDAYS($A18,$A18,AllHolidayDates), MIN(D18,"08:00")-IF(D18),""))
G10=IF(NETWORKDAYS($A10,$A10,AllHolidayDates), IF(D10="", "", ABS((E10-H10-F10))),"")
G11=IF(NETWORKDAYS($A11,$A11,AllHolidayDates), IF(D11="", "", ABS((E11-H11-F11))),"")
G12=IF(NETWORKDAYS($A12,$A12,AllHolidayDates), IF(D12="", "", ABS((E12-H12-F12))),"")
G13=IF(NETWORKDAYS($A13,$A13,AllHolidayDates), IF(D13="", "", ABS((E13-H13-F13))),"")
G14=IF(NETWORKDAYS($A14,$A14,AllHolidayDates), IF(D14="", "", ABS((E14-H14-F14))),"")
G15=IF(NETWORKDAYS($A15,$A15,AllHolidayDates), IF(D15="", "", ABS((E15-H15-F15))),"")
G16=IF(NETWORKDAYS($A16,$A16,AllHolidayDates), IF(D16="", "", ABS((E16-H16-F16))),"")
G17=IF(NETWORKDAYS($A17,$A17,AllHolidayDates), IF(D17="", "", ABS((E17-H17-F17))),"")
G18=IF(NETWORKDAYS($A18,$A18,AllHolidayDates), IF(D18="", "", ABS((E18-H18-F18))),"")
H10=IF(OR($E10=""),"", IF(NETWORKDAYS($A10,$A10,AllHolidayDates), IF(D10)-MAX(C10,"17:00"),""))
H11=IF(OR($E11=""),"", IF(NETWORKDAYS($A11,$A11,AllHolidayDates), IF(D11)-MAX(C11,"17:00"),""))
H12=IF(OR($E12=""),"", IF(NETWORKDAYS($A12,$A12,AllHolidayDates), IF(D12)-MAX(C12,"17:00"),""))
H13=IF(OR($E13=""),"", IF(NETWORKDAYS($A13,$A13,AllHolidayDates), IF(D13)-MAX(C13,"17:00"),""))
H14=IF(OR($E14=""),"", IF(NETWORKDAYS($A14,$A14,AllHolidayDates), IF(D14)-MAX(C14,"17:00"),""))
H15=IF(OR($E15=""),"", IF(NETWORKDAYS($A15,$A15,AllHolidayDates), IF(D15)-MAX(C15,"17:00"),""))
H16=IF(OR($E16=""),"", IF(NETWORKDAYS($A16,$A16,AllHolidayDates), IF(D16)-MAX(C16,"17:00"),""))
H17=IF(OR($E17=""),"", IF(NETWORKDAYS($A17,$A17,AllHolidayDates), IF(D17)-MAX(C17,"17:00"),""))
H18=IF(OR($E18=""),"", IF(NETWORKDAYS($A18,$A18,AllHolidayDates), IF(D18)-MAX(C18,"17:00"),""))
I10=IF(AND(J10="",G10="", K10=""),E10,"")
I11=IF(AND(J11="",G11="", K11=""),E11,"")
I12=IF(AND(J12="",G12="", K12=""),E12,"")
I13=IF(AND(J13="",G13="", K13=""),E13,"")
I14=IF(AND(J14="",G14="", K14=""),E14,"")
I15=IF(AND(J15="",G15="", K15=""),E15,"")
I16=IF(AND(J16="",G16="", K16=""),E16,"")
I17=IF(AND(J17="",G17="", K17=""),E17,"")
I18=IF(AND(J18="",G18="", K18=""),E18,"")
J10=IF(ISNA(IF(MATCH(A10,HolidayDates,0)>0,E10,"")),"",IF(MATCH(A10,HolidayDates,0)>0,E10,""))
J11=IF(ISNA(IF(MATCH(A11,HolidayDates,0)>0,E11,"")),"",IF(MATCH(A11,HolidayDates,0)>0,E11,""))
J12=IF(ISNA(IF(MATCH(A12,HolidayDates,0)>0,E12,"")),"",IF(MATCH(A12,HolidayDates,0)>0,E12,""))
J13=IF(ISNA(IF(MATCH(A13,HolidayDates,0)>0,E13,"")),"",IF(MATCH(A13,HolidayDates,0)>0,E13,""))
J14=IF(ISNA(IF(MATCH(A14,HolidayDates,0)>0,E14,"")),"",IF(MATCH(A14,HolidayDates,0)>0,E14,""))
J15=IF(ISNA(IF(MATCH(A15,HolidayDates,0)>0,E15,"")),"",IF(MATCH(A15,HolidayDates,0)>0,E15,""))
J16=IF(ISNA(IF(MATCH(A16,HolidayDates,0)>0,E16,"")),"",IF(MATCH(A16,HolidayDates,0)>0,E16,""))
J17=IF(ISNA(IF(MATCH(A17,HolidayDates,0)>0,E17,"")),"",IF(MATCH(A17,HolidayDates,0)>0,E17,""))
J18=IF(ISNA(IF(MATCH(A18,HolidayDates,0)>0,E18,"")),"",IF(MATCH(A18,HolidayDates,0)>0,E18,""))
K10=IF(ISNA(IF(MATCH(A10,HighHolidayDates,0)>0,E10,"")),"",IF(MATCH(A10,HighHolidayDates,0)>0,E10,""))
K11=IF(ISNA(IF(MATCH(A11,HighHolidayDates,0)>0,E11,"")),"",IF(MATCH(A11,HighHolidayDates,0)>0,E11,""))
K12=IF(ISNA(IF(MATCH(A12,HighHolidayDates,0)>0,E12,"")),"",IF(MATCH(A12,HighHolidayDates,0)>0,E12,""))
K13=IF(ISNA(IF(MATCH(A13,HighHolidayDates,0)>0,E13,"")),"",IF(MATCH(A13,HighHolidayDates,0)>0,E13,""))
K14=IF(ISNA(IF(MATCH(A14,HighHolidayDates,0)>0,E14,"")),"",IF(MATCH(A14,HighHolidayDates,0)>0,E14,""))
K15=IF(ISNA(IF(MATCH(A15,HighHolidayDates,0)>0,E15,"")),"",IF(MATCH(A15,HighHolidayDates,0)>0,E15,""))
K16=IF(ISNA(IF(MATCH(A16,HighHolidayDates,0)>0,E16,"")),"",IF(MATCH(A16,HighHolidayDates,0)>0,E16,""))
K17=IF(ISNA(IF(MATCH(A17,HighHolidayDates,0)>0,E17,"")),"",IF(MATCH(A17,HighHolidayDates,0)>0,E17,""))
K18=IF(ISNA(IF(MATCH(A18,HighHolidayDates,0)>0,E18,"")),"",IF(MATCH(A18,HighHolidayDates,0)>0,E18,""))
B10=IF(A10="","",A10)
B11=IF(A11="","",A11)
B12=IF(A12="","",A12)
B13=IF(A13="","",A13)
B14=IF(A14="","",A14)
B15=IF(A15="","",A15)
B16=IF(A16="","",A16)
B17=IF(A17="","",A17)
B18=IF(A18="","",A18)
Named Ranges
NameRefers ToCells
AllHolidayDates=Criteria!$B$2:$B$30
HighHolidayDates=Criteria!$B$15:$B$30
HolidayDates=Criteria!$B$2:$B$14
 
Upvote 0
New thought... lots of ways to workaround this with super-logic formulas, or just enter your overnight TimeOut as 24+? For example, your 11PM to 7AM shift would be entered as "23:00" (or "11 PM") and as "31:00"--full day (24 hrs) + 7 AM. Then all your old formulas (pre this string) should work as is.
 
Upvote 0
New thought... lots of ways to workaround this with super-logic formulas, or just enter your overnight TimeOut as 24+? For example, your 11PM to 7AM shift would be entered as "23:00" (or "11 PM") and as "31:00"--full day (24 hrs) + 7 AM. Then all your old formulas (pre this string) should work as is.

My worry is that the 24+ method is more cumbersome than should be necessary for the person entering the data, after all it would be almost as easy to calculate the individual fields by hand.
I will keep poking away until a solution presents itself. Thanks for all of your help.
 
Upvote 0

Forum statistics

Threads
1,215,461
Messages
6,124,956
Members
449,200
Latest member
indiansth

We've detected that you are using an adblocker.

We have a great community of people providing Excel help here, but the hosting costs are enormous. You can help keep this site running by allowing ads on MrExcel.com.
Allow Ads at MrExcel

Which adblocker are you using?

Disable AdBlock

Follow these easy steps to disable AdBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the icon in the browser’s toolbar.
2)Click on the "Pause on this site" option.
Go back

Disable AdBlock Plus

Follow these easy steps to disable AdBlock Plus

1)Click on the icon in the browser’s toolbar.
2)Click on the toggle to disable it for "mrexcel.com".
Go back

Disable uBlock Origin

Follow these easy steps to disable uBlock Origin

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back

Disable uBlock

Follow these easy steps to disable uBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back
Back
Top