Avatar billede c_lind Nybegynder
06. december 2002 - 23:50 Der er 13 kommentarer og
1 løsning

Udregning af periode mellem to tidpunkter

Følgende "lette " ting har jeg prøvet at løse gennem et stykke tid:

Har et start og et sluttidspunkt ( kan godt være flere dage mellem hinanden )..

Ønsker at kunne regne ud mellem disse tidspunketr hvormeget af tiden der ligger mellem et bestemt tidsinterval..

eks.

Start  2002 10 02 12 00
slut  2002 10 03 12 00

Tid mellem 20 00 og 0300 7 timer

Jeg regner med at dette skal laves i VBA som en funktion men.. jeg kan ikke lige knægge den hvis perioden er flere dage..

Hilsen Claus
Avatar billede klojs Nybegynder
07. december 2002 - 00:03 #1
Bliver du klogere, hvis du går ind i hjælpefunktionen og søger på VARIGHED, regnearksfunktion ? Der skulle stå hele proceduren.
Avatar billede katborg Praktikant
07. december 2002 - 09:36 #2
2002-10-02 12:00 (A1)
2002-10-03 12:00 (A2)

        01 00:00 (A4) formel =A2-A1

A1/A2 formateret som åååå-mm-dd tt:mm

A4 formateret som dd tt:mm
Avatar billede c_lind Nybegynder
07. december 2002 - 11:39 #3
Jeg må nok lige forklare lidt mere
Jeg har et start og et sluttidspunkt.. ( måske flere dage mellem hinanden )
Jeg vil så gerne vide hvormeget af den tid der er imellem disse to tidspunkter der er mellem Eks. 20.00 og 03.00
eks.

Start  2002 10 01 12 00
slut  2002 10 03 12 00

Tid mellem 20 00 og 0300 14 timer for perioden mellem start og slut..

Claus
Avatar billede katborg Praktikant
07. december 2002 - 11:52 #4
Forklaringen bliver ikke bedre af at blive gentaget - slet ikke med en forvirende udregning som ikke giver nogen mening

Forskellen mellem 20.00 og 03.00 = 14 timer ??

Er det fra 20.00 til 03.00 giver det 7 timer
Er det fra 03.00 til 20.00 giver det 17 timer

Hvilket det også vil gøre hvis du fulgte mit svar 07/12-2002 09:36:13.

Hvis du ikke ønsker at have dage på kan du formatere resultet til tt:mm

Har du en engelsk version skal du bruge flg. format.

yyyy-mm-dd hh:mm  / hh:mm
Avatar billede c_lind Nybegynder
07. december 2002 - 19:18 #5
Grunden til at jeg skal bruge denne udregning er at der skal beregnes forskellig takst alt efter klokkeslet:

Ordreline : Start 2002-10-01 0800 Slut 2002-10-05 1600

Takst 1 mellem 0800 1600
Takst 2 mellem 0000 - 0800 samt 1600-2400
dette skulle give 5 perioder til taskst 1 ( 5 * 8 timer ) og 8 perioder til takst2 ( 8 * 8 timer )..

Hilsen Claus
Avatar billede katborg Praktikant
07. december 2002 - 19:44 #6
OK - så forstod jeg dit problem :o)

Har pt. ikke lige et forslag, men vil prøve at gruble lidt over det, kender ikke til VBA - så hvis jeg finder en løsning bliver det vha. formler

Hilsen Jesper
Avatar billede katborg Praktikant
08. december 2002 - 20:01 #7
Så mener jeg at have fundet en formel der virker

Jeg har lavet et lille ark med følgende kolonner:

A: "Start"
B: "Slut"
C: "Dage / Timer"
D: "Timer i alt"
E: Timer Takst 1 0800-1600
F: Timer Takst 2 0000-0800 samt 1600-2400

I Række 2 har lavet følgende data/Formal

A2: 01-10-2002  08:00:00
B2: 05-10-2002  16:00:00
C2: =B2-A2                Resultat  04 Dage 08:00
D2: =C2*24                Resultat  104,00
E2:
=MAKS(0;MIN(8;16-TID(TIME(A2);MINUT(A2);SEKUND(A2))*24))+MAKS((AFRUND.GULV(C2;1)-1);0)*8+HVIS(C2>1;MAKS(0;MIN(TID(TIME(B2);MINUT(B2);SEKUND(B2))*24-8;8));0)
                          Resultat  40,00
F2: =D2-E2                Resultat  64,00

Alle timer er omreget til decimaltal - 7,50 timer er altså = 7 timer og 30 minutter

Hilsen
Jesper
Avatar billede katborg Praktikant
08. december 2002 - 21:04 #8
Har testet lidt videre - der er lige et par småfejl der skal justeres lidt.

Har lidt problemer med hvis man fx. har flg. tider - Start/slut samme dag

02-10-2002 03:00    02-10-2002 09:00
Avatar billede katborg Praktikant
08. december 2002 - 21:58 #9
Har tilføjet et lille "hvis", start/slut er samme dato bruges formel 1, ellers bruges formel 2.

=HVIS(AFRUND.GULV(A3;1)=AFRUND.GULV(B3;1);8-(8-MAKS(0;MIN(8;16-TID(TIME(A3);MINUT(A3);SEKUND(A3))*24)))-(8-MAKS(0;MIN(TID(TIME(B3);MINUT(B3);SEKUND(B3))*24-8;8)));MAKS(0;MIN(8;16-TID(TIME(A2);MINUT(A2);SEKUND(A2))*24))+MAKS((AFRUND.GULV(C2;1)-1);0)*8+MAKS(0;MIN(TID(TIME(B2);MINUT(B2);SEKUND(B2))*24-8;8)))
Avatar billede katborg Praktikant
08. december 2002 - 22:02 #10
Hov, der er lige en fejl i vælg af rækker!!

Dette er den rigtige

=HVIS(AFRUND.GULV(A2;1)=AFRUND.GULV(B2;1);8-(8-MAKS(0;MIN(8;16-TID(TIME(A2);MINUT(A2);SEKUND(A2))*24)))-(8-MAKS(0;MIN(TID(TIME(B2);MINUT(B2);SEKUND(B2))*24-8;8)));MAKS(0;MIN(8;16-TID(TIME(A2);MINUT(A2);SEKUND(A2))*24))+MAKS((AFRUND.GULV(C2;1)-1);0)*8+MAKS(0;MIN(TID(TIME(B2);MINUT(B2);SEKUND(B2))*24-8;8)))
Avatar billede katborg Praktikant
08. december 2002 - 22:21 #11
Et forsøg på at forklare fomlen trin for trin :-)

Er start/slut samme dato
=HVIS(AFRUND.GULV(A2;1)=AFRUND.GULV(B2;1);

Hvis det er samme dato

Starter ud med at ”give” 8 timer
8
Herefter kikkes på starttidspunkt, og der trækkes timer fra hvis der mødes senere end kl. 8
-(8-MAKS(0;MIN(8;16-TID(TIME(A2);MINUT(A2);SEKUND(A2))*24)))

Herefter kikkes på sluttidspunkt, og der trækkes fra hvis man går før kl. 16
-(8-MAKS(0;MIN(TID(TIME(B2);MINUT(B2);SEKUND(B2))*24-8;8)));

Hvis det IKKE er samme dato

Timer indenfor 8-16 på startdatoen
MAKS(0;MIN(8;16-TID(TIME(A2);MINUT(A2);SEKUND(A2))*24))

Timer inden for 8-16 på alle hele dage mellem start og slutdato
+MAKS((AFRUND.GULV(C2;1)-1);0)*8

Timer inden for 8-16 på slutdatoen
+MAKS(0;MIN(TID(TIME(B2);MINUT(B2);SEKUND(B2))*24-8;8)))
Avatar billede c_lind Nybegynder
08. december 2002 - 23:53 #12
Dette er lige den jeg har ledt efter Mange Tak...
"AFRUND.GULV" kendte jeg ikke men den er unversel ved beregning af dage og så videre..

Det nærmeste jeg er/ var kommet var en pseudo kode ala..

Træk slut fra start:
hvis tid større end 24 undersøg slut til start og træk 24 timer fra slut og begynd igen indtil slut-start<24 ..
Hilsen Claus
Avatar billede katborg Praktikant
09. december 2002 - 11:37 #13
Velbekomme - takker for points
Avatar billede clemen Nybegynder
12. december 2002 - 14:30 #14
Ved afrund.gulv(c2;1) vil den vel afrunde ned til en decimal, det gør den med rounddown i den engelske version af excel. Jeg ville benytte afrund.gulv(c2;0)

Afprøv med
Start:  2002 10 01 12 00
slut:  2002 10 03 22 00

afrund.gulv vil i den engelske version afrunde til 2,4, hvor den skulle være 2. Det kan nemt ses da resultatet vil give nogle minutter med i stedet for hele timer

Peter
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester



IT-JOB

Københavns Professionshøjskole

Nytænkende og agil IT-projektleder

Mobilplan ApS

Content Creator

Metroselskabet og Hovedstadens Letbane

Cyber Security Konsulent

Euronext Securities

Software Developer