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

Rekenen met tijd met overslaan uren tussen 21:00 en 6:00 uur

Status
Niet open voor verdere reacties.

hwavandewiel

Gebruiker
Lid geworden
29 nov 2011
Berichten
5
Hoi allen,

Ik ben een bestand aan het bouwen om uitrijders te kunnen volgen. Daar hebben ze 10 uur de tijd voor, maar dan alleen tussen 6:00 uur s'morgens en 21:00 uur s'avonds. Rekenen met tijd is eenvoudig en anders overal te vinden, maar hoe laat ik excel rekenen, dat hij rekening houdt met die uren dat de uitrijders niet hoeven te rijden.

Vb
1-12-2011 6:00 uur partij klaar is 1-12-2011 16:00 uitgereden
1-12-2011 11:00 uur partij klaar is 1-12-2011 21:00 uitgereden
1-12-2011 12:35 uur partij klaar is 2-12-2011 7:35 uur uitgereden

The trick zit hem duidelijk in de laatste regel, weet iemand een formule die rekening houdt met een pauze van 21:00 uur tot 06:00 uur?

Alvast bedankt.

Groeten Dirk
 
Test eens of de formule in bijlage alle mogelijke combinaties correct berekent.
 

Bijlagen

Laatst bewerkt:
Beste Wher,

Bedankt voor je reactie. Wellicht dat ik mijn vraag verkeerd heb gesteld.
Die 10:00 uur is de vaste waarde. Het gaat er mij om dat kolom C in jouw voorbeeld wordt berekend. Heb je daar ook nog een formule voor?

Groeten Dirk
 
hallo Dirk
misschien heb je hier iets aan
het is een zelf gemaakte function Pauze genaamd
hij gebruikt een pauze tabel waar in meerdere pauze tijden in voor kunnen komen
je kan de pauze tabel uitbreiden als je dat nodig vind.
ik heb de pauze tabel ingevuld met zie voorbeeld :groene vlak
en de formule gebruikt: gelevlak

ps let op als je 21:00 tot 24:00 invoert dat je niet 21:00 tot 0:00 invoert

groet sylvesterBekijk bijlage Rekenen met pauzes over meerdere dagen versie 1.xls
 
Laatst bewerkt:
Dank!

Hoi Sylvester,

Super, dank je! Het lijkt inderdaad dat het is wat ik nodig heb, de missing link! Ik ga hem vanavond inbouwen en laat je weten wat het resultaat is.

Groeten Dirk
 
hallo Dirk

als je het handig vindt is het mogelijk om de functies "Pause" en "UrenOptellen"
rekening te laten houden met zon- en feestdagen.

ps als je de function "Pause" gebruikt moet de function "PausePerDag" ook aanwezig zijn.
en als je "UrenOptellen" gebruikt dan moeten de functions "PausePerDag" en "Pause" ook aanwezig zijn in een module.
groet sylvester.

ik voeg de tekst van de functions to:
Code:
'de "Pause" function gebruikt "PausePerDag"
'dus om "Pause" te kunnen gebruiken moet "PausePerDag" aanwezig zijn
Function Pause(Van As Double, Tot As Double, Pauzetabel As Range)
    If Van > Tot Then Pause = Pause(Tot, Van, Pauzetabel): Exit Function
    Dim Dvan As Long: Dvan = Int(Van)
    Dim Dtot As Long: Dtot = Int(Tot)
    Dim HeleDag As Double: HeleDag = PausePerDag(0, 1, Pauzetabel)
    If Dvan = Dtot Then Pause = Pause + PausePerDag(Van - Dvan, Tot - Dtot, Pauzetabel): Exit Function
    Dim Dag As Long
    For Dag = Dvan To Dtot
        'Hier zou nog gekeken kunnen worden of dag een werkdag is of niet.
        If Dag = Dvan Then
            Pause = Pause + PausePerDag(Van - Dvan, 1, Pauzetabel)
        ElseIf Dag = Dtot Then
            Pause = Pause + PausePerDag(0, Tot - Dtot, Pauzetabel)
        Else
            Pause = Pause + HeleDag
        End If
    Next Dag
End Function

'deze functie wordt door de bovenstaande Pauze functie bebruikt
Function PausePerDag(Van, Tot, Pauzetabel As Range)
    Dim W1 As Boolean, W2 As Boolean
    For R = 1 To Pauzetabel.Rows.Count
        If Pauzetabel(R, 1) > Pauzetabel(R, 2) Then GoTo Volgende1
        W1 = Van < Pauzetabel(R, 1)
        W2 = (Van < Pauzetabel(R, 2)) And Not W1
        PausePerDag = PausePerDag - (Pauzetabel(R, 2) - Pauzetabel(R, 1)) * W1 - W2 * (Pauzetabel(R, 2) - Van)
Volgende1:
    Next R
    For R = 1 To Pauzetabel.Rows.Count
        If Pauzetabel(R, 1) > Pauzetabel(R, 2) Then GoTo Volgende2
        W1 = Tot < Pauzetabel(R, 1)
        W2 = (Tot < Pauzetabel(R, 2)) And Not W1
        PausePerDag = PausePerDag + (Pauzetabel(R, 2) - Pauzetabel(R, 1)) * W1 + W2 * (Pauzetabel(R, 2) - Tot)
Volgende2:
    Next R
End Function

'deze function gebruikt de function "Pause" en "Pause" gebriukt de function "PausePerDag"
'dus om "UrenOptellen" te kunnen gebruiken moeten "Pause" en "PausePerDag" aanwezig zijn
Function UrenOptellen(Van As Double, Uren As Double, Pauzetabel As Range)
    Dim P As Double, Ptemp As Double
    Do
        Ptemp = Pause(Van, Van + Uren + P, Pauzetabel)
        If Ptemp <= P Then
            UrenOptellen = Van + Ptemp + Uren
            Exit Do
        Else
            P = Ptemp
        End If
    Loop
End Function

groet sylvester
 
Hoi Sylvester

Ik heb hem ingebouwd en hij werkt perfect. Ik kan nu vanaf vertrek van de vrachtauto, reistijd, uitrijtijd en pauzetijd berekenen, wat mij uiteindelijk een tijd opleverd waarop de route uitgereden moet zijn. Super bedankt! Uit een andere database trek ik een dump wat de echte afmeld tijden zijn en ik weet precies of iedereen zich aan de afspraken houdt.

Ik kan aardig overweg met excel, kan de meeste functies goed toepassen/combineren, maar het schrijven van eigen functies is compleet nieuw voor me. Ik ga me hier toch eens in verdiepen.:)

Groeten Dirk
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan