• 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.
Hoi HSV,
Wordt je er nog niet moedeloos van?
Als ik de datum verander naar 02 kloppen de maanden niet meer
Ik stuur eventjes een vbtje mee
 

Bijlagen

Voor het bepalen van de maanden ging deze toch goed?
PHP:
DATUMVERSCHIL(E3;VANDAAG();"ym")

Om Ginger gerust te stellen de tekst een beetje aangepast in het vb.:d
 

Bijlagen

Bij "13-12-2015 8:00:00" is er nog 1 dag teveel.
Ook nog bij ander data.
Ik ben maar even wat anders gaan doen ipv Excellen (nu even een bakkie).
Op den duur wordt je gewoon formuleblind. :D
 
Laatst bewerkt:
Ik dacht "kom, ik stap óók gezellig in". En dan wel met een UDF waar de VBA-functie DateDiff wordt gebruikt. Dat werd dus dit...
Code:
'    Interval Explanation
'    yyyy Year
'    q Quarter
'    m Month
'    y   Day of year
'    d Day
'    w Weekday
'    ww Week
'    h Hour
'    n Minute
'    s Second

Function VBA_datediff(What As String, StartDatum As Date, EindDatum As Date) As String

    VBA_datediff = DateDiff(What, StartDatum, EindDatum)
    
    Select Case What
        Case "yyyy"
            x = IIf(VBA_datediff = 1, " jaar", " jaren")
        Case "q"
            x = IIf(VBA_datediff = 1, " kwartaal", " kwartalen")
        Case "m"
            x = IIf(VBA_datediff = 1, " maand", " maanden")
        Case "w", "d"
            x = IIf(VBA_datediff = 1, " dag", " dagen")
        Case "ww"
            x = IIf(VBA_datediff = 1, " week", " weken")
        Case "h"
            x = IIf(VBA_datediff = 1, " uur", " uren")
        Case "n"
            x = IIf(VBA_datediff = 1, " minuut", " minuten")
        Case "s"
            x = IIf(VBA_datediff = 1, " seconde", " seconden")
        Case Else
            x = ""
    End Select
       
    VBA_datediff = VBA_datediff & x
       
End Function
Het mooie hiervan is dat je het meervoud of enkelvoud (bv: dag, dagen) mooier kan verwerken aan tonen. Maarrrr... de functie in VBA heeft de nare eigenschap een jaar- of een maandovergang direct al te zien als "1". Dus bijvoorbeeld van 31/12/2015 naar 01/01/2016 vindt de functie écht al 1 jaar verschil. Jammer de bammer. Ik ben dus maar ff gaan Googlen en kwam op deze site waar al een kant en klare UDF werd voorgeschoteld (zie oplossing 3 in dat draadje). Wellicht hebben jullie hier iets als basis aan om het vraagstuk van Dotchie op te lossen?
 
Klaar met klussen, en doe derhalve maar weer een poging om mijn formulekennis een beetje op pijl te houden.
Code:
=" Dotchie is nu: "&DATUMVERSCHIL($E$3;VANDAAG();"y")&" jaar, "&MAAND(NU())-MAAND(E3)-(DAG(NU())<DAG(E3))+12*((DAG(NU())<DAG(E3))*(MAAND(E3)=MAAND(NU()))+(MAAND(NU())<MAAND(E3)))&" maand(en) ,"&DAG(NU())-DAG(E3)+DAG((E3)<DAG(NU())*DATUM(JAAR(NU());MAAND(NU())+1;0))-1&" dag(en), "&TEKST(NU()-$E$3;"u")&" uren en "&SUBSTITUEREN(TEKST(REST(NU()-$E$3;1);"u:mm");TEKST(REST(NU()-$E$3;1);"u:");"")&" minuten gestopt met koekjes bakken"
 
Hoi HSV,
Ik begin mij vreselijk schuldig te voelen, nu klopt alles behalve de dagen, we zitten terug aan 3
 
Hoi HSV,
Ik begin mij vreselijk schuldig te voelen, nu klopt alles behalve de dagen, we zitten terug aan 3
 
Jack,

Het is toch moeilijker dan gedacht. :eek:
Nieuwe poging.
Hierin lijkt alles goed te gaan, maar na zoveel pogingen.......


Alweer aangepast.
 

Bijlagen

Laatst bewerkt:
Hoi HSV,
Nog altijd hetzelfde probleem, ik blijf met die drie dagen zitten terwijl het pas vanavond om 21 uur mag zijn. Zelfs getest op 2 Excel versies.:confused:
 
Nog maar eens.
Ik zal de UDF van Leo straks ook eens testen.
Misschien dat daar de oplossing ligt.
Code:
=" Dotchie is nu: "&DATUMVERSCHIL($E$3;VANDAAG();"y")&" jaar, "&MAAND(NU())-MAAND(E3)-(DAG(NU())<DAG(E3))+12*((DAG(NU())<DAG(E3))*(MAAND(E3)=MAAND(NU()))+(MAAND(NU())<MAAND(E3)))&" maand(en) ,"&DAG(NU())-DAG(E3)+DAG((DAG(NU())<DAG(E3))*DATUM(JAAR(NU())-1;MAAND(E3)+1;0))-ALS(UUR(E3)>UUR(NU());1;0)&" dag(en), "&TEKST(NU()-$E$3;"u")&" uren en "&SUBSTITUEREN(TEKST(REST(NU()-$E$3;1);"u:mm");TEKST(REST(NU()-$E$3;1);"u:");"")&" minuten gestopt met koekjes bakken"
 
Hmmm... Je hebt soms van die vragen die je toch niet los laten...
Ik heb toch nog 'ns met de worksheet function DateDif zitten stoeien en daar kwam ik op dit resultaat...
Code:
[English]	="Dotchie is nu: "&DATEDIF(E3;E5;"y")&" jaar, "&DATEDIF(E3;E5;"ym")&" maand(en), "&DATEDIF(E3;E5;"md")&" dag(en) "&HOUR(E5-E3)&" uren en "&MINUTE(E5-E3)&" minuten gestopt met koekjes bakken"

[Dutch] 	="Dotchie is nu: "&DATUMVERSCHIL(E3;E5;"y")&" jaar, "&DATUMVERSCHIL(E3;E5;"ym")&" maand(en), "&DATUMVERSCHIL(E3;E5;"md")&" dag(en) "&UUR(E5-E3)&" uren en "&MINUUT(E5-E3)&" minuten gestopt met koekjes bakken"
Geen idee of deze versie de revue al is gepasseerd, maar volgens mij werkt die 100% (althans, ik kon er zo geen gaten in schieten).

Overigens heb ik voor de waarde van cel E5 gekozen in de formule ipv de functie Now(). Zo werd die voor mij overzichtelijker en in E5 wordt toch ook al Now() gebruikt.
 
Soms heb je inderdaad van die vragen Leo.
Hij is in ieder geval stukken korter; ook de uren en minuten zijn stukken beter dan de mijne.
Helaas heb ik toch een lekje gevonden.
Bij een datum in A3 waarvan de maanden 30 dagen hebben en februari in 2015 maar 28 krijgen we enig verschil.

Misschien kunnen we wat samensmelten.
Heb je die van mij nog getest?
 
Harry, je oudere versies heb ik wel getest (en vóóral als basis genomen). Je laatste nog niet.

Toch jammer dat er nog een lekje in de mijne zit. Had zo'n mooie start voor een lekker biertje geweest. :d
Welke datums heb je gebruikt voor het testen met die maanden? Als we de gelijke testdata hebben, kunnen we inderdaad misschien wel tot iets gezamenlijks komen.
 
Vreemd... Ik kan het echt niet vinden wat er fout gaat...

Voorbeeld:
startdatum-tijd: 15-1-2015 00:00:00
einddatum-tijd: 16-4-2016 21:40:00

Dan geeft mijn formule als uitkomst: Dotchie is nu: 1 jaar, 3 maand(en), 1 dag(en) 21 uren en 40 minuten gestopt met koekjes bakken

Ik kan daar geen speld tussen krijgen...
 
Ik heb hem al te pakken (proost).

In E3: 19-2-2015 8:00:00 (tijd is correct) 3 dagen teveel.
19-4 2015 (tijd is correct wat je ook maar invult). 1 dag teveel.
Het gaat in principe om de maand in E3; maanden met 30 dagen, wordt 1 dag teveel in uitkomst.
 
Laatst bewerkt:
Ha ha ha... bofkont. Proost dan maar!

Ik heb je situatie nagespeeld met in
E3 19-2-2015 00:00
E5 16-4-2016 21:56

Dit geeft als uitkomst... Dotchie is nu: 1 jaar, 1 maand(en), 28 dag(en) 21 uren en 56 minuten gestopt met koekjes bakken

Dat is toch goed???
van 19 februari 2015 naar 19 februari 2016 is 1 jaar (check)
van 19 februari 2016 naar 19 maart 2016 is 1 maand (check)
van 19 maart 2016 naar 16 april 2016 is 28 dagen (check)
van 0:00 uur naar 21:56 is 21 uren en 56 minuten (check & check)

Hoe zie jij dan dit nog fout gaat?
 
Hoi HSV en Ginger,
Ik ben pas terug thuis (was ik vergeten te vermelden daarstraks).
Ik dacht mijn dat formulekennis te roestig was geworden maar blijkbaar ligt de oplossing niet zo voor handen.
@Ginder bedankt dat je ook wil meedenken
@HSV bedankt voor de volharding en ik zou zeggen laat ze smaken.
Goede nachtrust gewenst
 
Leo, dan heb ik de hele tijd verkeerd gedacht en ik er ook zo lang over deed om het werkend te krijgen.
Misschien waren er toch formules tussen van mij die hetzelfde deden, maar ik kijk niet meer terug.
Ik volg jouw gedachtegang.
Die 19-02-2015 is dus correct als @gast0660 dezelfde methode hanteert.

Als je 19-04-2015 in E3 plaatst geeft het 28 dagen waar het volgens mij 27 moet zijn (11+16).

Edit: Of moet het 30-3 = 27 dagen zijn?
 

Bijlagen

Laatst bewerkt:
Als je 19-04-2015 in E3 plaatst geeft het 28 dagen waar het volgens mij 27 moet zijn (11+16).

Edit: Of moet het 30-3 = 27 dagen zijn?

Volgens mij écht 28 dagen... Met nog steeds 16-4-2016 in de einddatum, moet je dus rekenen vanaf 0:00 uur op 19 maart 2016 (want van 19 april 2015 naar 19 maart 2016 = 11 maanden (check)). Van 19 maart 2015 naar het einde van de maand (31 maart) 24:00 is het 13 dagen. Dan van 1 april 0:00 naar 16 april 0:00 is het 15 dagen. 13 + 15 = 28 (check)
Stel je dan voor dat je niet op 19-4-2015 om 0:00 start met rekenen maar om 08:00 uur. En vandaag op de 16e is het 22:30, dan moet je dus +22:30 - 08:00 = 14:30 rekenen als tussenliggende uren en minuten.

Het kan zijn dat ik nu ook formule en rekenblind ben geworden, maar anders klopt het volgens mij nog steeds 100%

Weet je wat? Laat Dotchie maar 'ns flink gaan testen en z'n mening geven.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan