• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Aantal uur berekenen tussen twee datums

Status
Niet open voor verdere reacties.

Danielle22

Gebruiker
Lid geworden
8 mei 2007
Berichten
378
Hallo allemaal,

Ik heb twee datums met tijden waarbij ik de gewerkte uren moet berekenen. Er moet gekeken worden welke uren er gewerkt worden van:

Maandag t/m Vrijdagochtend van 20:30 - 07:45
Vrijdagochtend t/m Maandagochtend van 20:30 - 07:45
Maandag t/m Vrijdag van 16.30 – 21.30

Zie ook mijn voorbeeld. Weet iemand hoe ik dit het beste kan gaan oplossen?

Groetjes,

Danielle
Bekijk bijlage test.xlsx
 
Hoi,

Begrijp ik goed dat je alleen de uren 's avonds en 's nachts wilt zien of bedoel je bijvoorbeeld met de eerste voorwaarde: van maandag 20:30 t/m vrijdag 7:45?
Er zit een overlap in: wil je uren dubbel tellen of is 21:30 dan wel 20:30 een vergissing?
Moet er nog rekening gehouden worden met feestdagen?
Mogen we ervan uitgaan dat er altijd minder dan 24 uur zitten tussen begin- en eind?

Groet,
Marcel
 
Hoi Marcel,

Klopt met de eerste kolom bedoel ik inderdaad van maandag 20:30 t/m vrijdag 7:45?

Die overlap is een foutje inderdaad, die 21:30 moet 20:30 zijn.

Ja er zit altijd minder dan 24 uur tussen begin en eind en hoeft geen rekening te houden met feestdagen

Heb jij ook een idee hoe ik dit kan realiseren?

Groetjes,

Danielle
 
Ik heb wel een idee hoe je dat kunt realiseren, maar dat worden nogal omvangrijke formules, dus daarom wil ik eerst het schema duidelijk hebben en dat is nu nog niet het geval.

Als we nu eens een hele week chronologisch doorlopen, dan lees ik:
Maandag 0:00-7:45: blok 2
Maandag 7:45-16:30: niet meenemen
Maandag 16:30-20:30: blok 3
Alle uren tussen maandag 20:30 en vrijdag 7:45 vallen in blok 1 en op di, wo, do telkens tussen 16:30-20:30 tevens in blok 3?
Vrijdag 7:45-16:30: niet meenemen
Vrijdag 16:30-20:30: blok 3
Vrijdag 20:30-maandag 0:00: blok 2 (ik neem aan dat je bedoelt vrijdagavond i.p.v. vrijdagochtend?)

Als dat niet klopt (zoals ik verwacht), kun jij op dezelfde wijze een compleet weekoverzicht opstellen en daarin aangeven in welk blok de tijden vallen?
 
Hoi Marcel,

Ik ga even naar de blokken kijken. Kom er zo snel mogelijk op terug.

Bedankt.

Groetjes,

Danielle
 
Danielle, het is handig als je de gewenste waarden invult.
dan snap ik beter wat je wilt.

ik ben ook benieuwd of dit kan voorkomen:
begintijd : do 24sep2015 6:49
eindtijd : di 29sep2015 22:00

geef eens wat extreme waarden

en heb je bezwaar tegen VBA?
 
Laatst bewerkt:
Hallo allemaal,

Ik heb de bijlage wat uitgebreid en de juiste tijdvakken aangegeven. Misschien dat het nu wat duidelijker is.

Met VBA heb ik ook geen problemen.

ik ben ook benieuwd of dit kan voorkomen:
begintijd : do 24sep2015 6:49
eindtijd : di 29sep2015 22:00

Dat kan niet voorkomen. Het volgende kan wel voorkomen:

begintijd : do 24sep2015 22:00
eindtijd : vr 29sep2015 03:00

Dit een wisseling van dag omdat het in de nacht wordt uitgevoerd. In de praktijk zullen begin en eindtijd nooit meer dan 24 uur bedragen.

Groetjes,

Danielle
Bekijk bijlage test.xlsx
 
bedoel je met:
Gewerkte uren
Maandag 20:30 t/m Vrijdagochtend 07:45
dit?

ma van 20:30 tot 24:00
di van 0:00 tot 24:00
wo van 0:00 tot 24:00
do van 0:00 tot 24:00
vr van 0:00 tot 7:45


dus :
maandag alleen de gewerkte uren tussen 20:30 en 24:00
di,wo do , alle gewerkte uren +
vr alleen de gewerkte uren tussen 0:00 en 7:45
 
Laatst bewerkt:
Oh nee Sorry :-)

Met Maandag 20:30 t/m Vrijdagochtend 07:45 bedoel ik ( 20.30 uur – 7.45 uur over de maandag t/m vrijdagochtend).

Dus:

maandag van 20:30 t/m 07:45
dinsdag van 20:30 t/m 07:45
woensdag van 20:30 t/m 07:45
donderdag van 20:30 t/m 07:45
vrijdag van 20:30 t/m 07:45

Sorry voor de verwarring
 
Ik bedoel dus:

Maandag 20:30 t/m Vrijdagochtend 07:45:
maandag van 20:30 t/m 07:45
dinsdag van 20:30 t/m 07:45
woensdag van 20:30 t/m 07:45
donderdag van 20:30 t/m 07:45
vrijdag van 20:30 t/m 07:45


Vrijdagavond 20:30 t/m Maandagochtend 07:45:
Alle gewerkte uren tussen vrijdagavond 20:30 en maandag 07:45

Maandag 16:30 t/m Vrijdag 20:30:
maandag van 16:30 t/m 20:30
dinsdag van 16:30 t/m 20:30
woensdag van 16:30 t/m 20:30
donderdag van 16:30 t/m 20:30
vrijdag van 16:30 t/m 20:30

Sorry voor de onduidelijkheid :-)
 
Kan je dan even een ander voorbeeldbestandje plaatsen?
voor zover ik kan zien valt er niets in de juiste blokken te plaatsen nu.
 
Ik bedoel dus:

Maandag 20:30 t/m Vrijdagochtend 07:45:
maandag van 20:30 t/m 07:45
dinsdag van 20:30 t/m 07:45
woensdag van 20:30 t/m 07:45
donderdag van 20:30 t/m 07:45
vrijdag van 20:30 t/m 07:45

Vrijdagavond 20:30 t/m Maandagochtend 07:45:
Alle gewerkte uren tussen vrijdagavond 20:30 en maandag 07:45

Maandag 16:30 t/m Vrijdag 20:30:
maandag van 16:30 t/m 20:30
dinsdag van 16:30 t/m 20:30
woensdag van 16:30 t/m 20:30
donderdag van 16:30 t/m 20:30
vrijdag van 16:30 t/m 20:30

Sorry voor de onduidelijkheid :-)

Die rode hoort er niet bij, denk ik? Anders telt-ie zowel in blok 1 als blok 2.
 
Oh klopt, die rode telt inderdaad niet mee. Is dit makkelijk op te lossen met een van of een formule.

Of anders misschien met filters en dan de juiste selecteren, maar dat is wel lastig volgens mij.
 
Het is zowiezo niet makkelijk, vandaar dat ik de regels goed wilde hebben.
Ik ga me op een formule-oplossing storten en wie weet komt ook iemand nog met een VBA-oplossing.
 
Bekijk bijlage Tijden verdelen over dagdelen.xlsx

Hierbij mijn oplossing.
Kort samengevat: ik heb hulpkolommen gemaakt (N-V) waarin ik de gewerkte tijd verdeel over 2 etmalen met de relevante tijdblokken en die breng ik dan weer over naar de 3 kolommen van de einduitkomst (F-H).

In detail:

Om te testen worden de begin- en eindtijden in de kolommen A en D willekeurig gegenereerd.
Met F9 kun je een nieuwe set genereren en verder wordt een nieuwe set gegenereerd zodra je iets wijzigt in het werkboek.
In het echte bestand voer je natuurlijk zelf de begin- en eindtijden in.

In kolom B heb ik de weekdag opgenomen i.p.v. het dagnummer (die staat bij mij in kolom J).
In kolom C staat de begintijd, berekend uit A.
In kolom E staat de eindtijd, berekend uit D en er is 1 bij opgeteld als voorbij middernacht is gewerkt (dat zie je niet, maar het is zo).

In kolom F de gewerkte uren van ma 20:30-vr 07:45, formule in F3 (en gekopieerd naar beneden):
Code:
=ALS(J3=1;U3;ALS(J3=2;SOM(Q3;R3;U3);ALS(EN(J3>=3;J3<=4);SOM(N3;Q3;R3;U3);ALS(J3=5;SOM(N3;Q3;R3);ALS(J3=6;N3;0)))))
Als begonnen is op zondag (1), dan de uren tussen 20:30-0:00 van dag 2 (kolom U).
Als begonnen is op maandag (2), dan de uren tussen 20:30-0:00 van dag 1 (kolom Q) + de uren tussen 0:00-7:45 van dag 2 (kolom R) + de uren tussen 20:30-0:00 van dag 2.
Als begonnen is op dinsdag t/m woensdag (3 t/m 4), dan de uren tussen 0:00-7:45 en 20:30-0:00 van dag 1 en 2 (kolommen N,Q,R,U).
Als begonnen is op donderdag (5), dan de uren tussen 0:00-7:45 en 20:30-0:00 van dag 1 (kolom N en Q) en 0:00-7:45 van dag 2 (kolom R).
Als begonnen is op vrijdag (6), dan de uren tussen 0:00-7:45 van dag 1 (kolom N).

In kolom G de gewerkte uren van vr 20:30-ma 07:45, formule in G3 (en gekopieerd naar beneden):
Code:
=ALS(J3=5;U3;ALS(J3=6;SOM(Q3:U3);ALS(J3=7;SOM(N3:U3);ALS(J3=1;SOM(N3:S3);ALS(J3=2;N3;0)))))
Als begonnen is op donderdag (5), dan de uren tussen 20:30-0:00 van dag 2 (kolom U).
Als begonnen is op vrijdag (6), dan de uren van 20:30 dag 1 t/m 0:00 van dag 2 (kolommen Q t/m U).
Als begonnen is op zaterdag (7), dan de som van alle uren op dag 1 en 2 (kolommen N t/m U).
Als begonnen is op zondag (1), dan de som van alle uren op dag 1, en 0:00-7:45 op dag 2 (kolommen N t/m S).
Als begonnen is op maandag (2), dan de uren tussen 0:00-7:45 op dag 1 (kolom N).

In kolom H de gewerkte uren van ma 16:30-vr 20:30, formule in H3 (en gekopieerd naar beneden):
Code:
=ALS(J3=1;T3;ALS(EN(J3>=2;J3<=5);P3+T3;ALS(J3=6;P3)))
Vergelijkbare systematiek als de andere 2 blokken.

Kolom J dagnummer start
Kolom K dagnummer einde
Kolom L aantal gewerkte uren

Kolom M moet blanko blijven.

N2 t/m V2: starttijden van de tijdblokken. R2 t/m V2 zijn berekend als N2 t/m R2 + 1.

N3 t/m U3 en verder naar beneden: de gewerkte uren in het betreffende tijdblok.
Formule in N3, gekopieerd naar rechts en naar beneden: Edit: zie volgende post voor een veel eenvoudiger versie.
Code:
=MIN($L3-SOM($M3:M3);MAX(MIN(O$2;$E3)-MAX(N$2;$C3);0))
Kort samengevat: zolang het totaal van de vorige kolommen kleiner is dan de totale gewerkte tijd, dan de gewerkte tijd in het huidige blok.
De gewerkte tijd in een blok is de eindtijd minus de begintijd, d.w.z. de kleinste van de begintijd van het volgende blok (O$2) en de eindtijd ($E3) minus de grootste van de begintijd van het huidige blok(N$2) en de begintijd ($C3).

Op veel plaatsen heb ik de tijden een aangepast nummerformaat gegeven die 0:00 onderdrukt: uu:mm;;;

Dat was het wel geloof ik. Je ziet: het is nog niet zo eenvoudig.
En het slechte nieuws is dat je zelf nog even moet controleren of ik geen vergissingen heb gemaakt...
 
Laatst bewerkt:
Bij nader inzien kan de formule in N3, gekopieerd naar rechts t/m U3 en naar beneden, veel eenvoudiger. Er is geen check nodig op het totaal van de uren in de vorige kolommen, en de uitkomst kan nooit negatief worden, dus dit volstaat:
Code:
=MIN(O$2;$E3)-MAX(N$2;$C3)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan