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

Excel formule met ORT

Status
Niet open voor verdere reacties.
Beste Sylvester-ponte en Haije,

* Kwam er vrij laat achter dat er toch nog een klein probleempje huist
in de berekening van de macro.
Wanneer er nachtdiensten worden gedraaid en ik deze invoer gaat het
mis. Dus van vrijdag op zaterdag, zaterdag op zondag, etc.
Wat moet ik aan de macro toevoegen via ALT F11 om dit op te kunnen
lossen? Is dit mogelijk?

* Heb een aparte kolom die het aantal gewerkte uren berekent
van de gewerkte tijden. Een simpele soms als =E13-D13. Alleen met
nachtdiensten krijg ik hierbij #####. Om dit op te lossen wordt de som...?

Groetjes,

Remco

P.s.: kon niet toevoegen als bijlage. Het eerste blad is 300 kb en de
rest van de weken zo'n 1,5 mb. Geen idee waarom de eerste week
zo verschilt met de rest. Upload max. is 100 kb op dit forum.

De macro is:

Code:
Function Procentjes(Cao As String, Nr As Integer)
    Dim R As Range
    Procentjes = ""
    Set R = Sheets("Bron").UsedRange.Columns(1).Find(Cao)

    If Not R Is Nothing Then
        If R.Offset(4, Nr) <> "" Then Procentjes = R.Offset(4, Nr)
    End If
End Function
Code:
Function Gewerkt(Van As Date, Tot As Date, Dag, Percentage, Cao As String)
    Dim R As Range, Ra As Range, Dagnaam As String
    Gewerkt = 0
    
'zoek de Cao
    Set R = Sheets("Bron").UsedRange.Columns(1).Find(Cao)
'als er geen Cao gevonden is dan stoppen
    If R Is Nothing Then GoTo klaar
'set Dagnaam en als er geen Dagnaam is dan stoppen
    Select Case Dag
        Case "Maandag", "Dinsdag", "Woensdag", "Donderdag", "Vrijdag"
            Dagnaam = "ma-vr"
        Case "Zaterdag"
            Dagnaam = "za"
        Case "Zondag"
            Dagnaam = "zo"
        Case Else
            GoTo klaar
    End Select
'zoek de tabelkop en als deze niet gevonden wordt dan stoppen
    Set R = R.Offset(0, 1)
    Do
        If R = Dagnaam And R.Offset(0, 1) = Percentage Then
            Set R = R.Offset(1, 0).Resize(2, 2)
            Exit Do
        End If
        Set R = R.Offset(0, 2)
        If R = "" Then GoTo klaar
    Loop
'tijden uit tijdentabel R vergelijken met tijd Van en tijd Tot
    For Each Ra In R.Columns(1).Cells
        If Ra <> "" Then Gewerkt = Gewerkt + Overlap(Van, Tot, Ra, Ra(1, 2))
    Next Ra
klaar:
    If Gewerkt = 0 Then Gewerkt = ""
    
End Function
Code:
Function Overlap(Van1, Tot1, Van2, Tot2)
    Dim W1 As Boolean, W2 As Boolean, W3 As Boolean, W4 As Boolean, Temp
        If Van1 > Tot1 Then Temp = Van1: Van1 = Tot1: Tot1 = Temp
        If Van2 > Tot2 Then Temp = Van2: Van2 = Tot2: Tot2 = Temp
        W1 = Van1 < Van2
        W2 = (Van1 < Tot2) And Not W1
        W3 = Tot1 < Van2
        W4 = (Tot1 < Tot2) And Not W3
        Overlap = (Tot2 - Van2) * (W3 - W1) - (Tot2 - Van1) * W2 + (Tot2 - Tot1) * W4
End Function
 
Laatst bewerkt door een moderator:
kun je aangeven wat je invult voor tijden?
bv van 22:00 tot 4:00
of van 22:00 tot 28:00
 
Ik vul bijvoorbeeld in op vrijdag van 22:00 tot 06:00 of zondag 23:00 tot 08:00. Verschillende CAO.
Heb een illustratie toegevoegde wat hij ervan maakt.
week.jpg

Als ik 06:00 typ maakt hij er overigens zelf 6:00 van.
Ook een illustratie toegevoegd van de ORT op welke dag en tijd.
ort.jpg

Gebruik gewoon de algemene tijd handhaving. Dus 00:00 - 12:00 / 12:00 - 24:00.
 
kun je iets met dit voorbeeld zie rij 11 blad 2
de functie "Gewerkt" is aangepast
dus van 22:00 tot 8:00 wordt zo berekend:
hij rekent nu eerst van de normaal aangegeven dag 22:00 tot 24:00
en daarna van de volgende dag van 0:00 tot de 8:00

de formule in kolom O (uren) is ook aangepast want :
8:00 - 22:00 wordt anders negatief

ps normaal gesproken reageer ik niet op plaatjes.
plaats liever een verkleind voorbeeld zo als de deze.
 

Bijlagen

  • test 7.xlsm
    41,1 KB · Weergaven: 89
Laatst bewerkt:
Zal het gaan testen.
Tot voor heden lijkt het perfect te zijn. ;-)

Excuses voor de plaatjes,
zoals eerder vermeld; de bestanden zijn groter
dan het toegestane upload limiet op het forum.
Had het al geprobeerd.
Totaal bij elkaar is het een 190 mb aan Excel
sheets geworden.

Zonder dat ik alles overnieuw hoef te gaan doen,
mag ik weten wat je precies hebt verandert zodat
ik dat in mijn bestaande sheets kan wijzigen en het werkt?
Moet het toch per sheet corrigeren en het zijn er 106.

De tijd berekening zag ik is:
Code:
=E11-D11+(E11<D11), =E13-D13+(E13<D13)
, Etc...
Deze werkt, heb het getest. Dus van die weet ik wat me te doen
staat. Thanks wederom.
 
Laatst bewerkt door een moderator:
@RemcoH Uit je laatste bericht maak ik op dat je mijn link niet heb gelezen. Wil je toch adviseren dat te doen.
 
Ok, excuses. Had ik inderdaad overheen gekeken.
U doelt waarschijnlijk op en ik citeer:''Wanneer je een code of formule wil toevoegen, plaats deze dan tussen de code-tags oftewel selecteer je code en klik op het # icoontje."
Zal daar op gaan letten. Deze zie ik staan links van de html tag.
U doelt waarschijnlijk ook op de sectie met .zip en .rar files. Zal hier ook gebruik van gaan maken. Kan helaas maar bij 1 blad, de andere zijn groter en worden tevens met beste compressie
16 bestanden. Beetje veel dus.
Bij deze post 3 .rar files. Voor Sylvester dus gelijk toch nog het origineel toegevoegd.

Bekijk bijlage Week 1.part1.rar
Bekijk bijlage Week 1.part2.rar
Bekijk bijlage Week 1.part3.rar

Hopelijk heb ik het nu volgens de regels gedaan.
 
Prima bedankt, mede namens de helpers.
 
Geen dank. Mijn fout immers, excuses voor het ongemak.

Zelfde vraag blijft staan voor Sylvester-ponte, namelijk:
"Hoe kan ik het beste, makkelijkste en/of snelste deze mooie oplossing(en) van uw test7.xlsm
in al mijn sheets implementeren?''

Bij voorbaat mijn dank is groot.
 
in post 25 staat:
Code:
de functie "Gewerkt" is aangepast
dus als je in de module de oude functie "Gewerkt" vervangt door:
de nieuwe functie "Gewerkt" uit "test 7" dan moet het gaan werken.
 
Ja, dat had ik gelezen. Maar kan ik dan het beste deze eerst exporteren naar een .bas bestand en
vervolgens weer importeren? Of moet ik dat anders aanpakken?

Sorry, ben hier allemaal geheel nieuw mee; leer er wel een hoop van. Excel 'groentje' in vergelijking
tot wat u kan.
 
Ok, bedankt. Is allemaal gelukt. Dacht te moeilijk terwijl het zo simpel kon.
wel via Wordpad / kladblok althans. WORD maakte er een zooitje van.
Zal het topic wederom sluiten.
Veel dank voor alle hulp. ;-)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan