Bosna i Hercegovina



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


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
Newton laže! Lake padaju brže!
↑  ↓

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


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.
Newton laže! Lake padaju brže!
↑  ↓

zxz Online
Administrator
Registrovan/a od: 03.02.2009-16:22
Komentari: 9,388


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,493


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?
Newton laže! Lake padaju brže!
↑  ↓

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


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).
Newton laže! Lake padaju brže!
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: 22.07.2017-07:46.