Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

[Excel] Funkcija za državne praznike

[es] :: Office :: Excel :: [Excel] Funkcija za državne praznike

[ Pregleda: 4512 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

barkarlo

Član broj: 125960
Poruke: 6
*.adsl.net.t-com.hr.



Profil

icon [Excel] Funkcija za državne praznike17.12.2006. u 23:42 - pre 210 meseci
u tabeli "tbleksploatacija" imam kolone: zaposlenik, početakrada(format datum i vrijeme zajedno), završetak rada(format isti kao početakrada)
napravio sam drugu tabelu državnih praznika "tblpraznici" s dvije kolone praznici(format samo datum),nazivpraznika.
Kako napraviti upit u kojem se vidi tko je i koliko sati radio na državne praznike.
Ja sam probao s ovim ali ne do kraja. nešto treba ubaciti u između < > u kodu ali ne znam što.
=IIF(nz(Dlookup("[praznici]";"tblpraznici";"[praznici]=#" &[pocetakrada] & "# OR [praznici]=#" &[zavrsetakrada] & "#");0)=0,< >,)
Osim ovoga možda se može napraviti funkcija
 
Odgovor na temu

Jpeca
Predrag Jovanović
poslovni analitičar
Gowi
Pančevo

Moderator
Član broj: 25683
Poruke: 2268
212.200.27.*

Sajt: www.gowi.rs


+109 Profil

icon Re: [Excel] Funkcija za državne praznike18.12.2006. u 13:49 - pre 210 meseci
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?
 
Odgovor na temu

Jpeca
Predrag Jovanović
poslovni analitičar
Gowi
Pančevo

Moderator
Član broj: 25683
Poruke: 2268
212.200.27.*

Sajt: www.gowi.rs


+109 Profil

icon Re: [Excel] Funkcija za državne praznike20.12.2006. u 11:49 - pre 210 meseci
Evo pokušao sam da napišem funkciju, pa ti proveri da li je to to.
Code:

Function SatiRada(poc As Date, kraj As Date, tblPraznici As Range) As Double
Dim poc1 As Date
Dim kraj1 As Date
Dim r As Long
  For r = 1 To tblPraznici.Rows.Count  ' Prolazak kroz tabelu praznika
     ' Trazi se da li postoji moguci presek radnog vremena i praznika
     If kraj >= tblPraznici(r, 1).Value And poc <= tblPraznici(r, 2).Value Then GoTo Presek
  Next r
  SatiRada = 0  ' Nema preseka
  Exit Function
Presek:
  poc1 = IIf(poc > tblPraznici(r, 1), poc, tblPraznici(r, 1))
  kraj1 = IIf(kraj < tblPraznici(r, 2), kraj, tblPraznici(r, 2))
  If kraj1 > poc1 Then
    SatiRada = DateDiff("h", poc1, kraj1)
  Else
    SatiRada = 0
  End If
End Function

Primer korišćenja funkcije imaš u prilogu.
Nije to loše Rembrante, samo što ne bi dodao još malo boje?
Prikačeni fajlovi
 
Odgovor na temu

[es] :: Office :: Excel :: [Excel] Funkcija za državne praznike

[ Pregleda: 4512 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.