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

rondcirkelen in een serie cijfers van 1 t/m 7

Status
Niet open voor verdere reacties.

Ginger

Terugkerende gebruiker
Lid geworden
29 dec 2006
Berichten
2.972
Weet iemand een oplossing in een formule om rond te kunnen cirkelen in een serie cijfers van 1 t/m 7? Deze cijfers vertegenwoordigen de weekdag nummers waarbij 1 maandag is en 7 dus zondag.
Als je met datums werkt, kan je voor bijvoorbeeld een donderdag (dag 4) een optelling maken met 4 dagen. Je komt dan qua datum 4 dagen verder uit en daar kan je dan weer maandag uit halen.
Maar NU moet het kunnen zónder een onderliggende datum.

Dus als voorbeelden...
(do) 4 + 4 (dagen) = 8 maar moet dus (ma) 1 zijn
(di) 2 - 3 (dagen) = -1 maar moet dus (zo) 7 zijn
(vr) 5 + 5 (dagen) = 10 maar moet dus (wo) 3 zijn

Ik heb veel dingen geprobeerd en kwam daar bijna goed mee uit. Alleen tot mijn ergernis werd de zondag (dag 7) dan een dag nul. En die kan ik niet verder verwerken in waar ik het voor nodig heb (en tuurlijk is het heel simpel om die nullen ff in een 7 aan te passen, maar ik zoek eigenlijk al jaren naar een échte oplossing).

In de bijlage zie je een afleverschema. In kolom B staat de afleverdag als cijfer. In kolom C de leadtime (= de kortste tussenliggende tijd tussen bestellen en afleveren). En dan in kolom D mijn formule:
=(7*(B2<(ROUND(C2/24;0)+1))+(B2-(ROUND(C2/24;0)+1)))
In dit voorbeeld wordt alles teruggerekend. De leadtime is dus altijd een min waarde om zo vanuit de afleverdag de besteldag te kunnen berekenen. De formule moet vast véél slimmer kunnen en MOET dus niet met een nul voor de zondag, maar met een 7 terugkomen. De formule moet dus ook de positieve kant uit kunnen rekenen (zoals in de voorbeeldjes hierboven).

Wie o wie heeft ook wel 'ns met zo'n vraagstuk van "cirkelen in een serie cijfers" gezeten en weet het antwoord hierop?
 

Bijlagen

Probeer het eens zo:
PHP:
=MAX(1;(7*(B2<(AFRONDEN(C2/24;0)+1))+(B2-(AFRONDEN(C2/24;0)+1))))
 
Is dit wat ?

PHP:
=MOD(B2-C2;7)+1
 
Laatst bewerkt:
Is leadtime in dagen? of werkdagen? iets anders? Op je eerste regel heb je leverdag 4 (donderdag?) en dan 26 dagen eerder kom ik niet uit op 2 (dinsdag?)

je hebt een heel grote tabel maar je leadtime is altijd 26 of 74, en dan kun je al die complexiteit net zo goed vervangen door een if statement ;)
 
@Wampier, ja... da's niet handig dat ik dat er niet bij aangeef. De leadtime is in uren. En we rekenen terug van middernacht. Dus als de afleverdag woensdag (3) is, en de leadtime 26 (uur), dan reken je terug van de middernacht overgang van dinsdag op woensdag en dan 26 uur terug. Ofwel, de winkel moet op maandag (1) vóór 22:00 uur de bestelling hebben doorgeseind om geaccepteerd te kunnen worden door ons warehouse management systeem.
Die 26 zijn dus geen dagen. Daarom deel ik dat in m'n formule door 24 met een afrondingsfunctie.
 
@snb, ja, daar ben ik ook mee aan de slag geweest, maar die +1 in de formule geeft een foute dag aan. Als je in de 1e regel van m'n bijlage kijkt (en voor het gemak van die 26 uur dus een 1 maakt) dan komt je oplossing op 4 uit. Als je van die plus 1 een min 1 maakt, gaat het wél goed. Totdat... je een leadtime kiest van 3 dagen. Dan kom je uit op een zondag en had daar dag 7 willen zien, maar wordt uiteraard een dag nul. ;)
 
Code:
=rest(-1+afronden.beneden(b2-c2/[COLOR="#FF0000"]24[/COLOR];1);7)+1
 

Bijlagen

Laatst bewerkt:
Dus kolom c zijn uren ?

Dan wordt het:

PHP:
=MOD(B2-CEILING(C2/24;1)-1;7)+1
 
Laatst bewerkt:
Je kan de mod functie in een 'choose' (kies) functie stoppen? Ik heb helaas even geen tijd om het uit te werken.
 
SNB en ik delen dezelfde mening, de zijne is iets handiger verpakt.
 
Code:
=rest(-1+afronden.beneden(b2-c2/[COLOR="#FF0000"]24[/COLOR];1);7)+1

Bart, deze heb ik iets moeten uitbreiden om de dagen in de vorige week kloppend te krijgen...
Code:
=[COLOR="#FF0000"]INT[/COLOR](MOD(-1+ROUNDDOWN(B2-C2/24;1);7)+[COLOR="#FF0000"](B2>D2)[/COLOR])
Maar dán doet die inderdaad wat die doen moet! Top. Tnx.
 
Dan wordt het:

Dit is 'm kort en bondig en doet exact wat de bedoeling was. Mijn hartelijke dank hiervoor.

In de bijlage nog alle gegeven formules. Die in de kolommen met de oranje headers zijn de werkende versies.

Case closed. Dank aan alle reageerders!
 

Bijlagen

Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan