• 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.

Formule uitbreiden met uren en minuten

Status
Niet open voor verdere reacties.
@Ginger,

Zo klopt je uitleg als een bus.
Zit ik toch nog met een vraagje, anders blijf ik er ook maar mee zitten.
17-4-2015 8:00:00 geeft: 0 jaar, 11 maanden, 30 dagen, 14 uur en 45 minuten op dit moment.
Bij die van mij hetzelfde, maar dan 29 dagen.
De maand april heeft 30 dagen, maar dan weer geen 30 dagen en 14 uur++.
 
Hoi HSV en Ginger,
Harry, dit is Heeeeeeeeeeeeeeeeeeeeeeeeeeeeeem!!!!:thumb:
Grondig aan het testen geweest, kan geen fout meer ontdekken.
Man, man, man, wat ben ik blij dat ik jullie niet meer hoef lastig te vallen.
De tips van ginger over DateDiff zal ik ook nog eens grondig bekijken.
Ik kan jullie niet genoeg bedanken voor de inspanningen. TOP!!!
Bij deze zet ik de vraag op opgelost.
 
En toch ben ik nog niet tevreden Jack.
Er gaat toch nog iets fout met bepaalde data.
17-03-2015 20:00:00
17-04-2016 11:30:00
Geeft het 1 jaar als resultaat.
Wat nog niet juist is toch?
Volgens mij is het 0 jaar, 11 maand, 23 uur, 15 uur en 30 minuten.

Ik ben het nog maar eens bij langs gelopen.
Maar als jij tevreden bent, laat ik het wat het voor het is.

Edit: ik had per ongeluk ook de formule van Leo veranderd; in het bestand diens eigen formule teruggeplaatst.
 

Bijlagen

Laatst bewerkt:
Zit ik toch nog met een vraagje, anders blijf ik er ook maar mee zitten.
17-4-2015 8:00:00 geeft: 0 jaar, 11 maanden, 30 dagen, 14 uur en 45 minuten op dit moment.
Bij die van mij hetzelfde, maar dan 29 dagen.
De maand april heeft 30 dagen, maar dan weer geen 30 dagen en 14 uur++.
Harry, ik heb een poging gewaagd om je formule-gedeelte om het aantal dagen te bepalen te doorgronden...

Code:
[English]	=DAY(NOW())-DAY(E3)+DAY((DAY(NOW())<DAY(E3))*DATE(YEAR(NOW())-1;MONTH(E3)+1;0))-IF(HOUR(E3)>HOUR(NOW());1;0)

[Dutch] 	=DAG(NU())-DAG(E3)+DAG((DAG(NU())<DAG(E3))*DATUM(JAAR(NU())-1;MAAND(E3)+1;0))-ALS(UUR(E3)>UUR(NU());1;0)

...maar het duizelt me wat er allemaal opgeteld en afgetrokken wordt. Ik zie dus helaas niet waar het nou precies fout loopt (zelfs niet met Evaluate ;)), maar ik gok dat je ergens teveel vast houdt aan het té hard bezig zijn met het berekenen van de werkelijk tussenliggende dagen tussen de 2 opgegeven datums. Dit in plaats van het feit dat "een jaar verder", letterlijk dezelfde datum oplevert in het jaar daarna. Ongeacht of het nou een schrikkeljaar is of hoeveel dagen elke maand heeft.
Hetzelfde met het aantal dagen in een maand. "Een maand verder" is bijvoorbeeld van 2 februari naar 2 maart, maar óók van 2 maart naar 2 april. Het is dezelfde "maand vooruit" ondanks dat het aantal dagen in die maanden sterk verschilt.
Ik heb het gevoel dat dáár het denkproces fout liep bij je (althans, dat was wel bij mij zo in eerste instantie :D).

Sorry dus dat ik je niet verder kan helpen met het oplossen van de manco in je formule. Heb je nog wel een beetje kunnen slapen vannacht?
 
Er gaat toch nog iets fout met bepaalde data.
17-03-2015 20:00:00
17-04-2016 11:30:00

@Harry, geeft bij mij Dotchie is nu: 1 jaar, 1 maand(en), 0 dag(en) 15 uren en 30 minuten gestopt met koekjes bakken
Dat klopt toch?

Maar als jij tevreden bent, laat ik het wat het voor het is.
Zullen we dat inderdaad dan maar doen? ;)
 
Laatst bewerkt:
Hoi HSV,
Met deze gegevens
17-03-2015 20:00
17-04-2016 11:45
Krijg ik:
Dotchie is nu: 1 jaar, 0 maand(en) ,30 dag(en), 15 uren en 45 minuten gestopt met koekjes bakken
En dit is volgens mij correct
17/03/2015 tot 17/03/2016 is 1 jaar
30 dagen is correct(maart heeft 31 dagen)dus 0 maanden
Het verschil tussen 20:00 en 11:45 is 15 uren en 45 minuten
En als ik wat verder test
Dotchie is nu: 1 jaar, 0 maand(en) ,31 dag(en), 0 uren en 0 minuten gestopt met koekjes bakken
Dit is wat er zal gebeuren om 08:00 uur vanavond
Is ook correct
Zet ik één dagje terug
16/03/2015 11:59
krijg ik dit
Dotchie is nu: 1 jaar, 1 maand(en) ,1 dag(en), 0 uren en 4 minuten gestopt met koekjes bakken
Dat is opnieuw correct
m.a.w. morgenavond om 20:00 uur (met bovenstaande gegevens) krijg ik dit
Dotchie is nu: 1 jaar, 1 maand(en) ,1 dag(en), 0 uren en 0 minuten gestopt met koekjes bakken
Dat is opnieuw correct
Ik kan echt geen fout meer ontdekken
 
Ik heb er gelukkig niet van wakker gelegen Leo. :d:d

Helaas heb ik het daar fout geschreven.
E3: 17-04-2015 20:00:00
E5: 17-04-2016 tijd kleiner dan E3.
Geeft 1 jaar, 0 maanden, 0 dagen +rest, wat volgens mij niet goed is.
Volgens mij moet het:
0 jaar, 11 maanden, 29 dagen + tijd.


2;
Daar ging ik inderdaad dus steeds in de fout.
Het moeilijke is de uren en minuten.
Is dit hoger in E3, dan moet dit van de dagen afgetrokken worden.
Valt dit net weer in een dag van 30 of 31 moet het weer van de maand worden afgetrokken.
Daarna weer het aantal maanden zodat je op het goede jaar uitkomt.

Kun je mij nog volgen? :d
 
Helaas heb ik het daar fout geschreven.
E3: 17-04-2015 20:00:00
E5: 17-04-2016 tijd kleiner dan E3.
Geeft 1 jaar, 0 maanden, 0 dagen +rest, wat volgens mij niet goed is.

Ahhh.... Ik snap je gedachtengang... De uitkomst van m'n formule is Dotchie is nu: 1 jaar, 0 maand(en), 0 dag(en) 15 uren en 30 minuten gestopt met koekjes bakken
Ik denk echt dat we lopen te klooien met het tekstuele gedeelte "jaar" en "maand".
In je voorbeeld beginnen we op 17 april om 20:00 uur. Ofwel, van deze dag heb je nog 4 uur "tegoed". Als je vanaf die DATUM (dat is dus vanaf 0:00 uur) een jaar verder gaat, kom je uit op 17 april 2016 om 0:00 uur. Op die dag zijn we 11 uur en 30 minuten onderweg. Als je dit dus optelt bij die 4 uur die we nog te gaan hadden in 2015 op die dag, kom je uit op 15 uur en 30 minuten.
Mijn gevoel zegt dat dit correct is, maar ik snap jouw oplossing ook. Hier moet volgens mij een wiskundige of een neerlandicus naar kijken om het verlossende woord te geven. ;)
 
Hoi HSV en Ginger
Volgende
E3: 17-04-2015 20:00:00
E5: 17-04-2016 tijd kleiner dan E3.
Geeft (om 12:21 vandaag dus kleiner dan E3)
Dotchie is nu: 0 jaar, 11 maand(en) ,29 dag(en), 16 uren en 21 minuten gestopt met koekjes bakken
Is correct
Maar heb toch nog een foutje ontdekt
deze
17/04/2015 12:25:00
17/04/2016 12:25:00
geeft
Dotchie is nu: 1 jaar, 11 maand(en) ,30 dag(en), 0 uren en 0 minuten gestopt met koekjes bakken
Die 11 maanden moeten 0 maanden worden, 30 dagen ook 0
 
@Dotchie, Wowwwww.... Laten we het ff duidelijk houden met welke formule je nu bezig bent. NIET die van mij zo te zien...
 
@ Ginger
Klopt
Wilde net een edit toevoegen
dit stukje werkt bij u correct en bij harry niet
Maar bij andere testjes had jij iedere keer een dag teveel en dan was de formule van Harry weer correct
 
@Dotchie, OK, doe ons een plezier en geef bij elke reactie ff aan met welke formule je hebt getest. Dat voorkomt veel heen en weer berichten. ;)

Verder ben ik aanbeland bij de status dat ik het ff niet meer weet. Volgens mij zit je nu klem tussen iets correct in tekst uitdrukken en met iets waarmee je verder moet rekenen. Want als het 't laatste is, zou je met uren moeten gaan werken (of wellicht zelfs minuten). Maar om dit allemaal om te zetten naar tekstuele begrippen, geeft duidelijk wat "wrijving"....
 
Hoi
Een vbtje
13/03/2016 20:00
17/04/2016 12:50
Harry: Dotchie is nu: 0 jaar, 1 maand(en) ,3 dag(en), 16 uren en 53 minuten gestopt met koekjes bakken
Ginger: Dotchie is nu: 0 jaar, 1 maand(en), 4 dag(en) 16 uren en 53 minuten gestopt met koekjes bakken
Van13 tot 14 (1 dag) van 14 tot 15 (1 dag) van 15 tot 16 (1 dag ) = 3 dagen Harry is correct dag 4 is pas vanavond om 20:00uur

volgende
17/04/2015 20:00:00
17/04/2016 20:00:00
Ginger: Dotchie is nu: 1 jaar, 0 maand(en), 0 dag(en) 0 uren en 0 minuten gestopt met koekjes bakken
Harry: Dotchie is nu: 0 jaar, 11 maand(en) ,30 dag(en), 0 uren en 0 minuten gestopt met koekjes bakken
Ginger is correct (is exact op de minuut 1 jaar)
Uren en minuten zijn bij beidde altijd correct
Hopelijk is het wat duidelijker
 
@allen, Ik heb er nu geen tijd voor om te maken, maar je zou in VBA een procedure moeten schrijven die in stappen werkt
1) bepaal met datevalue(Year + 1) of je een jaar verder zit. Zo ja, blijf dit doorlopen totdat het nee is (en telt daarbij in een variabele in je lus het gepasseerde aantal jaren). Je hebt dan je tijdelijke-einddatum gevonden én het aantal jaren.
2) ga vanaf die gevonden tijdelijke-einddatum teruglopen in maanden via hetzelfde principe als je met de jaren bent bezig geweest. Vind je een maand die vóór de bewuste werkelijke-einddatum ligt, dan weet je hoeveel stappen in de lus je moet aftrekken van 12 (maanden). Je hebt nu dus het aantal maanden gevonden én een nieuwe tijdelijke-einddatum.
3) ga vanaf die nieuw gevonden tijdelijke-einddatum weer vooruit lopen in een lus via het datevalue principe maar dan dus steeds 1 bij de dag optellen. Uiteindelijk kom je dan op de werkelijke-einddatum (0:00 uur !) en weet je ook het aantal tussenliggende dagen.
4)nu kan je bepalen hoeveel "resttijd" je had van je startdag en hoeveel "verbruikte" tijd je hebt op je einddag waarmee je dus je uren en minuten kan vinden.

Misschien geeft dit nog wel de meeste precisie....
 
...is correct dag 4 is pas vanavond om 20:00uur...

DIT is dus zo'n tekstueel probleem. Een "dag" loopt van 0:00 tot 23:59:59,99999. Een dag loopt niet van 20:00 tot 19:59:59,9999... Dan heet het namelijk 24 uur verder en niet een dag. ;)
Lastig dit hè?
 
Het valt me ook smerig tegen moet ik bekennen.
De berekening is niet zo ingewikkeld, maar om het in formules te verwoorden. :shocked:
Als je iets veranderd aan een formule die zo lang is wordt je op den duur gewoon scheel. :d

Ik doe hierbij toch nog maar een poging.
Neem de tijd om het goed te controleren; kan ik in de tussentijd even iets anders doen. :p:p
 

Bijlagen

Hoi HSV,
Terug iets ontdekt
17/04/2015 13:55
17/04/2016 13:50
geeft: Dotchie is nu: 0 jaar, 0 maand(en) ,0 dag(en), 23 uren en 55 minuten gestopt met koekjes bakken
Edit : de code van ginger geeft net hetzelfde resultaat
 
Laatst bewerkt:
Als je iets veranderd aan een formule die zo lang is wordt je op den duur gewoon scheel. :d

Harry, tipje van mij... Sinds Excel versie 2007 mag je in je formules met spaties en harde returns (alt + enter) werken. Zo heb ik jouw formule ook steeds in stukjes geknipt om 'm te kunnen volgen. Wellicht kan deze tip je helpen om iets minder scheel te worden?
Je op een na laatste formule zag er bijvoorbeeld zó uit...
Code:
=" Dotchie is nu: "&DATEDIF($E$3;TODAY();"y")&" jaar, "&
MONTH(NOW())-MONTH(E3)-(DAY(NOW())<DAY(E3))+12*((DAY(NOW())<DAY(E3))*(MONTH(E3)=MONTH(NOW()))+(MONTH(NOW())<MONTH(E3)))&" maand(en) ,"&
DAY(NOW())-DAY(E3)+DAY((DAY(NOW())<DAY(E3))*DATE(YEAR(NOW())-1;MONTH(E3)+1;0))-IF(HOUR(E3)>HOUR(NOW());1;0)&" dag(en), "&
TEXT(NOW()-$E$3;"u")&" uren en "&
SUBSTITUTE(TEXT(MOD(NOW()-$E$3;1);"u:mm");TEXT(MOD(NOW()-$E$3;1);"u:");"")&" minuten gestopt met koekjes bakken"
(nog zonder spaties maar wel de Alt+Enter) Ik heb elk "tijdmoment" afgebroken na je ampersand teken. Dan wordt je dus niet gehinderd als je bijvoorbeeld iets aan de maand wilt aanpassen.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan