26. november 2008 - 23:25Der er
39 kommentarer og 1 løsning
Formel til tidsberegning
Jeg har en mødetid og gåtid i hhv. kolonne A og B. Tiderne er registreret i tidsformat xx:xx. Tiderne kan være over hele døgnet - og mødetid kan være før 24:00 og gåtid efter 24:00.
Hvordan skal formlerne se ud, for at jeg får beregnet nedenstående tillæg rigtigt? (Resultat skal være omregnet til alm. tal.
Det er svært at sige hvordan formlerne skal se ud, da det afhænger af de præcise varianter af møde- og gå-hjem tid. Foruden de regler, som måske(msåke ikek findes, hvis man fx møder kl. 03.00 og går hjem kl. 02:00 to dage senere.
Public Function Overtid(Mødetid As Date, sluttid As Date, StartOvertid As Date, Slutovertid As Date) As Double Dim TT As Date, I As Integer Application.Volatile If Mødetid > sluttid Then sluttid = sluttid + 1 If StartOvertid > Slutovertid Then Slutovertid = Slutovertid + 1 For TT = StartOvertid To Slutovertid Step TimeSerial(0, 1, 0) If sluttid > TT And TT > Mødetid Then I = I + 1 End If Next If I > 0 Then Overtid = I / 60 Else Overtid = 0 End If End Function
I var hurtige. -> vejmand. Jeg kender artiklen - men hvor står hjælpen til mit spørgsmål i den artikel? -> jkrons - har selv tænkt på den variant - men hvis man nu forudsætter, at arbejdstiden vil være maks 24 timer - ?? -> kabbak - kan man bruge alm. formler i stedet for en makro?
Jeg negligerer bestemt ikke jkrons artikel, som jeg ofte finder meget nyttig. Men jeg synes ikke lige, at den berører min problemstilling. Mht. præcise varianter af møde- og gåhjem tider, så ville jeg meget gerne, hvis formlen tog højde for alle varianter indenfor 24 timer. Vil mene det kan lade sig gøre, kan bare ikke lige overskue det
8710-> hvis du ser på de forskellige spørgsmål, der er stillet omkring dette emenm, både her, men også i forskellige internationale fora, vil du se, at det er umuligt at lave en generel formel, der kan håndtere alle varianter af tidsberegninger. Man kan stort set altid finde en eller flere undtagelser, som formlerne ikke dækker. Jeg vil gerne se på en formellløsning, men det kan godt tage et tid at få testet alle varianter, og rettet formlen til.
Det er derfor, det er nødvendigt med en helt præcis beskrivelse af den situation, der skal løses.
kabbak->Jeg har prøvet din løsning med mødetid 21:00 gåhjem-tid 19:00 Når jeg beregner overtiden mellem 15 og 18 giver den 0, hvor den burde give 3. 18-21 tiden giver også 0, men burde give 1. 21-06 tiden giver 23:36, hvor den burde give 9.
Har jeg mødetid kl. 20:00 og gåhjemtid kl. 19:00 giver alle tiderne 0.
Jeg får samme fejl i din. Hvis jeg møder kl. 21.00 og går hjem kl. 19.00 får jeg got nok 9 timer (8,98) mellem 21 og 06, men mellem 15 og 18 skulle der være 3 timer og mellem 18 og 21 skulle der være 1. I begge tilfælde får jeg 0.
1) Det er vel et problem, at den den overtid, man arbejder mellem 15 og 19 næste dag ikke medregnes :-)
2)Fordi I ikke bliver initieret. Den starter derfor med at være 0, og den når kun på på 539, ikke 540, som den skulle. Sæt I = 1 i begyndelsen af din kode, så virker den del.
nu er det vel sjælent at man arbejder så længe, men her er den rettede kode
Public Function Overtid(Mødetid As Date, sluttid As Date, StartOvertid As Date, Slutovertid As Date) As Double Dim TT As Date, I As Integer
Application.Volatile If Mødetid >= sluttid Then sluttid = sluttid + 1 If StartOvertid > Slutovertid Then Slutovertid = Slutovertid + 1 I = 1 End If For TT = StartOvertid + TimeSerial(0, 1, 0) To Slutovertid Step TimeSerial(0, 1, 0) If sluttid >= TT And TT > Mødetid Then I = I + 1 End If Next If I > 0 Then Overtid = I / 60 Else Overtid = 0 End If End Function
Hvis jeg lige må bryde ind :-). Jeg har downloadet kabbak's fil. Når jeg i den fil forsøger at kopiere den ændrede kode ind, så sker der ikke noget. Jeg højreklikker på fanen, sletter koden, og kopier den nye kode ind. Men jeg får stadig x,98 (som dog er ligegyldigt) - men jeg får også forkerte tillæg i jkrons eksempler - f.eks. 21:00-19:00. Som jeg har forstået det, så er dette rettet i den nye kode - så det må være mig, der ikke kan sætte den ind. Noget andet: er det overhovedet muligt at skrive løsningen som en formel, eller skal det være som en makro? og lige til sidst - det er helt okay, at arbejdstiden ikke må overstige 24 timer. Det er vel reelt set kun en teoretisk mulighed.
I dit tilfælde er muligheden for at arbejde mere end 24 timer måske teoretisk, men ikke i alle. Det er af samme grund, jeg startede med at postulere, at en genrel overtidsberegningsfunktion er umulig at lave.
Dit problem kan sikkert godt løses med formler, men de bliver ikke helt simple.
Nu har jeg prøvet følgende: Kolonne A-C = mødetid, gåtid, arbejdstid i t:m Kolonne D-F = mødetid, gåtid, arbejdtid omregnet til tal (*24) Kolonne G har jeg så tillægstid ml. 15-18 med flg. formel: =+HVIS(OG(E2>18;D2<18)=SAND;18-MAKS(D2;15);0)+(HVIS(E2>39;MIN(E2;42)-39;0)) Lyder det forkert - eller burde jeg kunne nørkle videre på samme måde til de øvrige tillægstider?
Jeg kunne ønske arbejdsmarkedets parter laaaangt væk. Hvordan kan man finde på, at skrue sådanne overenskomster sammen? Ser så godt ud på et stykke papir!
Hjææælp! Møde-/gåtid i B16 og B17 i format t:m Møde-/gåtid i Y16 og Z16 i talformat Tillæg 15-18 (virker): =+HVIS(OG(Y16<18;Z16>15)=SAND;MIN(Z16;18)-MAKS(Y16;15);0)+(HVIS(Z16>39;MIN(Z16;42)-39;0)) Tillæg 18:21 (virker): =+HVIS(OG(Y16<21;Z16>18)=SAND;MIN(Z16;21)-MAKS(Y16;18);0)+(HVIS(Z16>42;MIN(Z16;45)-42;0)) Jeg kan simpelthen ikke overskue det sidste tillæg fra 21-06. Nogen forslag?
Jeg tror, den er der! Tillæg 21-06: =+HVIS(OG(Y16<24;Z16>21)=SAND;MIN(Z16;24)-MAKS(Y16;21);0)+(HVIS(Z16>45;MIN(Z16;48)-45;0))+(HVIS(Y16<6;MIN(Z16;6)-Y16;0))+(HVIS(Z16>24;MIN(Z16;30)-24;0))
Jegh ar ikke mulighed for at teste din løsning lige nu, men det eneste, du kan gøre, er at prøve den med alle mulige og umulige kombinationer af møde- og gåhjemtider, og så se om den altid regner rigtigt :-9
Fint nok. Beklager jeg ikke vender tilbage, men efter opdateringen af Eksperten får jeg ikke længere mail, selv om jeg overvåger grupperne, så jeg ser kun indlæg, når jeg tilfældigvis kigger forbi. Acces gruppen er en undtagelse. Derfra får jeg mail hele tiden.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.