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

next workingday met feestdagen in power query

moensk

Gebruiker
Lid geworden
23 jun 2013
Berichten
834
voorbeeld gemaakt in bijlage
ik zoek een script dat filtert op basis van datum - feestdag en losland.
bv 1 mei is een feestdag in Belgie maar niet in Nederland.

op 30/4 (donderdag) wil ik volgende werkdag (geen za / zo) zien dus enkel de rijen zien voor NL = 1 mei (vrijdag) en BE = 4 mei (maandag)
hij moet dus bij zijn filtering rekening houden met losland en met feestdagen tabel.
tabel "data" is de basisdata
 

Bijlagen

op 30/4 (donderdag) wil ik volgende werkdag (geen za / zo) zien dus enkel de rijen zien voor NL = 1 mei (vrijdag) en BE = 4 mei (maandag)
Wat bedoel je hier eigenlijk mee?
 
30/4 = huidige dag en dagnummer (is de datum van openen van de excel)
bepaal ik via volgend script
Code:
    Vandaag = Date.From(DateTime.LocalNow()),
    Dagnummer = Date.DayOfWeek(Date.From(DateTime.LocalNow()), Day.Monday) + 1,
Bericht automatisch samengevoegd:

zonder rekening te houden met Losland had ik volgende script kunnen maken welke werkt.
Hiervoor heb ik een hulptabel gebruikt om gewenste DagNummer te kunnen filteren (zie screenshot)
DagNummer.webp

Code:
    // Ritdaum omzetten naar Dagnummer
    #"Dag-Week" = Table.TransformColumns(flt_RITDATUM,{{"RITDATUM", Date.DayOfWeek, Int64.Type}}),
    // query toevoegen Dagnummer met nieuwe dagnummer voor filtering volgende werkdag
    Query_Dagnummer = Table.NestedJoin(#"Dag-Week", {"RITDATUM"}, DagNummer, {"HUIDIG"}, "DagNummer", JoinKind.LeftOuter),
    uitv_Dagnummer = Table.ExpandTableColumn(Query_Dagnummer, "DagNummer", {"NIEUW"}, {"NIEUW"}),
    // filter op basis van nieuw dagnummer
    fltr_Dagnummer = Table.SelectRows(uitv_Dagnummer, each [NIEUW] = Dagnummer),
    Del_Kol = Table.RemoveColumns(fltr_Dagnummer,{"RITDATUM", "NIEUW"}),
 
Laatst bewerkt:
Ik heb er even dit van gemaakt.
Je gebruik dus in een stukje query de functie "DateTime.LocalNow()".
In je voorbeeld was dat dus 30-4-2026.
In het bijgevoegde voorbeeld is dit nu “hard” gecodeerd.
Probeer daar het stukje query dat je al hebt, tussen te voegen.
Ik weet alleen niet zeker of dit in je originele query’s -ervan uitgaande dat er meer zijn- gaat werken.
 

Bijlagen

Die 30/4 vind ik nergens terug dus deze datum heb ik nu hardcoded in de query geplaatst. Via een Custom Function vind ik de eerst volgende werkdag, op basis van de twee vakantie lijsten (BE/NL).
 

Bijlagen

ik gaf 30/4 als voorbeeld omdat dat een datum is waarbij NL en BE een verschillende feestdag hebben.
als beide landen dezelfde dag een feestdag hebben dat kreeg ik wel opgelost.
 
De oplossing van @jec vind ik een mooie vondst met de functie.
In het voorbeeld van @jec heb ik de hardgecodeerde voorbeelddatum vervangen door Date.From(DateTime.LocalNow()), zoals je in #3 hebt aangegeven.
Probeer deze maar eens uit.
 

Bijlagen

Dat gaat je best lukken. ;)
 
Terug
Bovenaan Onderaan