Bosna i Hercegovina



Avko Offline
Super Moderator
Registrovan/a od: 28.05.2014-09:21
Komentari: 2,291


Subject: izracun nocnog rada
molio bi pomoc za izracun sati nocnog rada

DownloadIzvorni kod (Text):
  1.      A        B          C            D
  2. 1   OD       DO        SATI       NOCNI RAD
  3. 2   4:00    12:00       8,00         2,00
  4. 3   7:00    15:00       8,00         0,00
  5. 4  16:00    23:00       8,00         1,00
  6. 5  22:30     6:30       8,00         7,30
zanima me excel formula ili VBA kod koji bi stavio u modul, dakle bilo sto samo da izracunam kolonu D.
Kolonu C nije problem izracunati uz pomoc formule MOD(B1-A1;1)*24. = ukupno sati, ali mi je problem izracunati nocni rad. Nocni rad je od 22:00 do 6:00.
unapred zahvaljujem
radim na crno, trošim na bijelo.
↑  ↓

Avko Offline
Super Moderator
Registrovan/a od: 28.05.2014-09:21
Komentari: 2,291


Subject: Re: izracun nocnog rada
evo ga u meduvremenu nasao na internetu vise rijesenja ali niti jedno nije radilo pa sam morao malo proucavati i pronaci pravo rijesenje.
pa evo ga:
ako zelimo decimalni format upisemo:
=IF(AND(A3>0;B3>0);IFERROR((MOD((TIMEVALUE(B3)-TIMEVALUE(A3));1
)*24-(TIMEVALUE(B3)<TIMEVALUE(A3))*(22-6)+MEDIAN(TIMEVALUE(A3)*24;6
;22)-MEDIAN(TIMEVALUE(B3)*24;6;22));"0,00");"")

ako zelimo format vrijeme (hh:mm) onda upisemo:
=IF(AND(A3>0;B3>0);IFERROR(TEXT((MOD((TIMEVALUE(B3)-TIMEVALUE(A
3));1)*24-(TIMEVALUE(B3)<TIMEVALUE(A3))*(22-6)+MEDIAN(TIMEVALUE(A3)*24;6
;22)-MEDIAN(TIMEVALUE(B3)*24;6;22))/24;"hh:mm");"0,00");"")

moje celije formatirane su opcenito pa je u njima vrijeme u obliku stringa zato koristim TIMEVALUE(), ako su vase celije vec formatirane kao vrijeme onda izbacite TIMEVALUE()

eto, to je to. Mozemo dalje.
radim na crno, trošim na bijelo.
↑  ↓

zxz Offline
Administrator
Registrovan/a od: 03.02.2009-16:22
Komentari: 9,221


Subject: Re: izracun nocnog rada
Posto niko nije htio evo mene opet.
DownloadIzvorni kod (Visual Basic):
  1. Function Nocni(ByVal PocetakRada As Date, ByVal KrajRada As Date)
  2. 'nocni 22-6
  3. Dim I As Single
  4. Dim Reper1 As Date
  5. Dim Reper2 As Date
  6. Dim Rez
  7.  
  8.  
  9. If PocetakRada > KrajRada Then
  10. KrajRada = KrajRada + 2
  11. PocetakRada = PocetakRada + 1
  12. Reper1 = "31.12.1899 22:00"
  13. Reper2 = "01.01.1900 06:00"
  14. Else
  15. KrajRada = KrajRada + 1
  16. PocetakRada = PocetakRada + 1
  17. Reper1 = "31.12.1899 00:00"
  18. Reper2 = "31.12.1899 06:00"
  19.     If PocetakRada > Reper2 Then
  20.     Reper1 = "31.12.1899 22:00"
  21.     Reper2 = "01.01.1900 00:00"
  22.     End If
  23. End If
  24.  
  25. If PocetakRada <= Reper1 Then
  26.     If KrajRada >= Reper1 Then
  27.     PocetakRada = Reper1
  28.     Else
  29.         Nocni = 0
  30.         GoTo Kraj
  31.     End If
  32. End If
  33.  
  34. If KrajRada > Reper2 Then
  35.    KrajRada = Reper2
  36. End If
  37.  
  38. Rez = KrajRada - PocetakRada
  39. Nocni = Format(Rez, "hh:mm")
  40.  
  41. Kraj:
  42. Exit Function
  43.  
  44. End Function

Pozdrav
↑  ↓

Avko Offline
Super Moderator
Registrovan/a od: 28.05.2014-09:21
Komentari: 2,291


Subject: Re: izracun nocnog rada
hvala
vrlo zanimljiva funkcija.
konac koje dijelo krasi.
Moglo bi se reci da tvoji kodovi imaju vise umjetnicki karakter u sebi, a ne matematicki algoritam.
Ono sto je stradivari u rukama violinskog virtuoze to je u tvojim rukama vb.
Tako jednostavno, a opet kompleksno. Covjek gledajuci ovo nemoze a da se ne upita: pa kako se ja toga nisam sjetio?
radim na crno, trošim na bijelo.
↑  ↓

Avko Offline
Super Moderator
Registrovan/a od: 28.05.2014-09:21
Komentari: 2,291


Subject: Re: izracun nocnog rada
samo da javim da radi. Malo sam prilagodio svojim potrebama. Ducan moze raditi dvokratno: I termin :dnevni udarni, a II termin: nocni. Uveo sam varijablu nocni1, a u samoj funkciji ne formatiram Nocni, vec ga ostavljam u decimalnom obliku. Pri tome provjeravam ako je ducan bio zatvoren, inventura, odredeni datum onda ne upisujem 0,00 vec "" (prazan string).
radim na crno, trošim na bijelo.
Ovaj komentar je mijenjan 1 puta. zadnja izmjena 14.07.2015-10:48 od strane zxz. ↑  ↓

 Podijeli  Dodaj odgovor Stranice (1): 1


All times are GMT +01:00. Current time: 31.03.2017-01:38.