Problem je interesantan ali nije baš jednostavan. Ovo su samo neka moja razmišljanja, koja možda mogu da ti pomognu - ne i konačno rešenje.
Za početeka mislim da ćeš morati da u tabeli praznika staviš vreme za početak i kraj: ako je neko počeo 1.1.2007 u 20:00 i završio 2.1.2007 u 6:00 - u tom slučaju radio je delom na jedan a delom na drugi datum pa mi se čini unos samo datuma nedovoljan.
Glavni problem se svodi na nalaženje preseka između dva datumska opsega. Nazovimo ih Opseg1 (start1, end1) i Opseg2 (start2, end2).
Neka su podaci o ovim osezima uneti u ćelije B3, C3 i B4, C4
A ! B ! C
Opseg1 ! 01/01/07 20:00 ! 02/01/07 08:00
Opseg2 ! 01/01/07 00:00 ! 03/01/07 00:00
U ćeliji B5 nalazimo = MAX(B3, B4), a u ćeliji C5 = MIN(C3, C4)
Presek opsega - tj sati rada na prazinik dobijaš u tom slučaju kao razliku ove dve vrednosti
=IF(B5<=C5, C5-B5, 0)
Ovo neće funkcionisati ukoliko je radno vreme duže od 24 sata. U tom slučaju bi se moralo izvršiti izvršiti preračunavanje dana u sate.
Detaljnije o problemu preseka opsega vidi npr.
http://ryanfarley.com/blog/archive/2004/08/19/966.aspx
Dalje je problem kako naći opseg praznika koji treba uporediti sa opsegom radnog vremena. Probao sam neke kombinacija sa VLOOKUP ali nisam uspeo. Naravno uvek postoji mogućnost da se napravi funkcija koja će to raditi. U tom slučaju u funkciju može da se implementira i gornja logika.
Nije to loše Rembrante, samo što ne bi dodao još malo boje?