Just nu i M3-nätverket
Jump to content

Programmera en tidsräknare


Marion80

Recommended Posts

Hej!

Är det nån som skulle kunna hjälpa mig med en tidsräknare...? Så här ser den ut idag:

 

= IF(A3<>"";

 

(C3-B3)-$K$3/24*(INT(C3)-INT(B3))-

 

(INT((INT(C3)-INT(B3))/7)*$K$4/24)-

 

IF(WEEKDAY(C3;2)<WEEKDAY(B3;2); $K$4/24; 0);"")

 

Räknaren tar fram produktionstid, dvs natt och helg dras bort. C3 och B3 är två datum med klockslag, K3 är nattid som ska dras bort och K4 är fredag fram till nattiden börjar samt helgtid. Nu skulle jag även vilja dra bort rast men jag får inte till det...Om man startar före 10:30 (alltså om B3 startar före 10:30) så ska 40 min dras bort. Om produktionstiden sedan löper längre än 17:30 ska 40 min till tas bort. Detta ska ju givetvis tas bort varje dag mellan start och stopp också. På fredagar däremot ska ingen tid tas bort.

Jag blir helt förvirrad ju mer jag tänker på det...i värsta fall får jag räkna allt för hand men det kanske finns nån som fattar sånt här direkt =)

 

Tack på förhand!

 

//Tess

 

Link to comment
Share on other sites

Jag tror att (om jag tolkar din fråga rätt) det är bättre om du designar om funktionen helt.

Om du aktiverar Analysis toolpack så får du tillgång till Networkdays som kan användas för att räkna antalet arbetsdagar mellan två datum (med en kompletterande lista så kan man även räkna bort helgdagar).

Alltså behöver din funktion behandla tiden för startdagen (beroende på om arbetet startar före 10:30), slutdagen (beroende på om arbetet slutar efter 17:30), och antalet arbetsdagar mellan startdag och slutdag * arbetstid för heldag.

Om normal arbetstid för arbetsdag lagras i A3 kan formeln se ut så här för startdag/tid i B1 och slutdag/tid i B2:

=MOD(B2;1)-MOD(B1;1)+(Networkdays(B1;B2)-1)*A3-IF(OR(MOD(B1;1)<TIMEVALUE("10:30");MOD(B2;1)>TIMEVALUE("17:30"));TIMEVALUE("00:40");0)

 

Pär B

 

Link to comment
Share on other sites

Ojdå (tror jag)...

 

Jag insåg två saker när jag såg hur mitt svar såg ut;

1) det var lite svårtolkat

2) jag kanske hade missat att det skall dras ifrån rast dubbelt om start<10.30 och slut>17.30

alltså blir det såhär:

 

=MOD(B2;1)-MOD(B1;1)+(Networkdays(B1;B2)-1)*A3-IF(MOD(B1;1)<TIMEVALUE("10:30");TIMEVALUE("00:40");0)-IF(MOD(B2;1)>TIMEVALUE("17:30");TIMEVALUE("00:40");0)

 

förklaring:

MOD(B2;1) = tiddelen av sluttiden

MOD(B1;1) = tiddelen av starttiden

(Networkdays(B1;B2)-1)*A3 = antalet arbetsdagar * arbetstid (-1 för att både B1 och B2 räknas med)

IF(MOD(B1;1)<TIMEVALUE("10:30");TIMEVALUE("00:40");0) = -40 min om startten är före 10:30

IF(MOD(B2;1)>TIMEVALUE("17:30");TIMEVALUE("00:40");0) = -40 min om sluttid är efter 17:30

 

/Pär B

 

Link to comment
Share on other sites

Tack för att du tog dig tid! Förstår dock inte riktigt...ska den fetmarkerade IF-satsen vara sådär? Är ganska ny på sånt här så du får ursäkta om jag är helt trög.

 

=MOD(B2;1)-MOD(B1;1)+(Networkdays(B1;B2)-1)*A3-IF(MOD(B1;1)&

lt;TIMEVALUE("10:30");TIMEVALUE("00:40");0)-IF(MOD(B2;1)>

TIMEVALUE("17:30");TIMEVALUE("00:40");0)

 

Mvh

 

Tess

 

Link to comment
Share on other sites

Nja, som den ser ut i forumet så har den &lt; där det borde vara <.

 

Om det inte är det som du undrar över så kan jag hänvisa till följande inlägg ( //eforum.idg.se/viewmsg.asp?entriesid=873216#873425 ) som förklarar Excels tidssystem.

MOD(B1;1) tar helt enkelt klockslaget från ditt datum + tid värde. TIMEVALUE("10:30") räknar fram ett tidsvärde (decimaltal) som motsvarar 10:30, om dina inställningar kräver något annat än : mellan timmar och minuter så är det bara att ändra. Man skulle också kunna skriva 10,5/24, men det är inte lika tydligt (för att inte tala om 40/60/24 istället för TIMEVALUE("00:40").

 

/Pär B

 

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...