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

moeilijk excel probleem

Status
Niet open voor verdere reacties.

annekebal

Gebruiker
Lid geworden
11 jul 2017
Berichten
10
100 0.1€
100 0.2€
100 0.5€
100 1€
100 2€

Ik heb een bak met 500 munten in. bv 100 van elke soort.

Nu wil ik een terug te geven bedrag ingeven bv 21,60€ waarna ik een aantal munten krijg per soort die ik moet teruggeven.
De enige voorwaarde is dat het aantal munten zo gelijk mogelijk moet blijven. (dus van elke soort moeten er altijd ongeveer evenveel aanwezig zijn) Indien er van een soort meer zijn moeten deze meer teruggegeven worden opdat er weer een gelijkheid zou optreden.

Is dit mogelijk met excel?
 
Dat kun je uit het hoofd zonder Excel.
 
Dat denk ik niet

Uit het hoofd zou lukken met makkelijke getallen.
Maar stel dat het aantal stukken ongelijk is bv je hebt volgende munten:

70x 0.1€
60 x0.2€
120x 0.5€
47x 1€
56x 2€

en je wilt 74,80€ teruggeven.
Hoeveel van elke munt moet je teruggeven opdat het aantal munten van elke soort terug (zoveel mogelijk) gelijk is.
ik zou daar een formule moeten voor hebben die dit telkens zo goed mogelijk kan uitrekenen.
Als je dat uit je hoofd kan moet er ook een formule voor bestaan. Ik kan ze echter niet vinden.
 
Zet een pinautomaat in je winkel. Dan heb je dat gezeur niet.
 
?

Ik dacht dat dit forum er was om mensen te helpen?
het is net om de logica van een betaal automaat te programmeren dat ik dit nodig heb... :rolleyes:
 
"De logica van een betaalautomaat te programmeren".
Licht dat een toe. Is die een huiswerkopdracht?
 
Evident.

Wat heb je zelf zoal bedacht ?
 
dit

Wat ik zelf bedacht heb ik het aantal munten te delen met deze factoren: 3,8 1,8 0,8 0,3 en 0,1
Dit zijn de sommen van de resterende munten.

factor # munten rest
100 2 50 3.8 8.000 14.000 8=round(30/3.8;0)
100 1 100 1.8 8.000 6.000
100 0.5 200 0.8 8.000 2.000
100 0.2 500 0.3 7.000 0.600
100 0.1 1000 0.1 6.000 0.000
500 30

Bij 30 krijg ik dus mooi 8 munten van 2€, 8 van 1€, 8 halve, 7 x 20ct en 6 x 10ct gelijker kan niet.
het loopt enkel verkeerd wanneer het aantal aanwezige munten niet gelijk is.
bv als er maar 80 van 2€ zijn moeten deze veel minder teruggegeven worden.
 
De enige voorwaarde is dat het aantal munten zo gelijk mogelijk moet blijven. (dus van elke soort moeten er altijd ongeveer evenveel aanwezig zijn)

Waarom deze voorwaarde?
 
Daarom

omdat 3.8 = 2+1+0,5+0,2+0,1 dus deel je het bedrag door 3,8 voor het aantal munten van de eerste soort (€2)
het resterende bedrag deel je dan door 1.8(=1+0,5+0,2+0,1)
enz.
Volgens mij en niet zo slechte redenering want ik kom aan zeer gelijke cijfers per muntsoort.

ik slaag er niet in rekening te houden met de verhouding en tevens een exacte berekening te hebben
 
Dat delen door 3,8 leek me nl. evident.

Door ook rekening te houden met de verhouding tussen aantallen muntsoorten creëer je volgens mij strijdige criteria.
 
omdat 3.8 = 2+1+0,5+0,2+0,1 dus deel je het bedrag door 3,8 voor het aantal munten van de eerste soort (€2)
het resterende bedrag deel je dan door 1.8(=1+0,5+0,2+0,1)
enz.

redenering is denk ik in de goede richting
Eerst (probeer) maak je het aantal munten gelijk door het verschil tussen het aantal van die munt en het minimum aantal van alle munten uit te geven.
Hetgeen dan overblijft deel je door 3,8 wat dan overblijft door 3,7 wat dan door 3,6 en verder met 3,5 3,3 3,1 3 2,8 2,5 2,3 2,2 2,1 2 1,8 1,5 1,2 1,1 1 0,8 0,7 0,6 0,5 0,3 0,2 0,1
 

Dat is knap!
Het werkt perfect, maar ik snap niet hoe het werkt :shocked:

kan je me die macro in mensentaal uitleggen?

ik moet dat ook proberen te vertalen naar c en heb daar ook weinig kaas van gegeten.... maar een uitleg van de macro zou me eens stuk verder kunnen helpen...
 
De code begint het eindbedrag samen te stellen met de muntwaarde met het hoogste aantal.
De aantallen van deze muntwaarde lopen dan omlaag, totdat een muntwaarde met de op een na laagste aantallen wordt bereikt.
Vervolgens wordt het eindbedrag samengesteld uit de 2 muntwaardes met de hoogste aantallen.
De aantallen van deze 2 muntwaardes lopen dan omlaag, totdat een muntwaarde met de op twee na laagste aantallen wordt bereikt.
Etc.
 
Dit:
ik moet dat ook proberen te vertalen naar c...
Lijkt niet helemaal consistent met dit:

Overigens zijn de resultaten in mijn tests niet altijd perfect maar het komt in de buurt.
In zoverre zal de vertaling naar c misschien lastig zijn dat mijn code dankbaar gebruik maakt van excel-werkbladfuncties (max en somproduct).
Het zoekbedrag wordt afgerekend in een loop waarbij telkens de meestvoorkomende muntensoort, of de combinatie van meestvoorkomende muntensoorten, wordt afgetrokken van het zoekbedrag. Aan het eind van de loop blijft meestal een restbedragje over dat met zo duur mogelijke munten wordt afgerekend.
 
Dit:
Lijkt niet helemaal consistent met dit:


Overigens zijn de resultaten in mijn tests niet altijd perfect maar het komt in de buurt.
In zoverre zal de vertaling naar c misschien lastig zijn dat mijn code dankbaar gebruik maakt van excel-werkbladfuncties (max en somproduct).
Het zoekbedrag wordt afgerekend in een loop waarbij telkens de meestvoorkomende muntensoort, of de combinatie van meestvoorkomende muntensoorten, wordt afgetrokken van het zoekbedrag. Aan het eind van de loop blijft meestal een restbedragje over dat met zo duur mogelijke munten wordt afgerekend.

lijkt me een moeilijke procedure, maar ze werkt wel.
consistent?
ik wou dit initieel in C programmeren maar ben eerst begonnen om het in excel voor elkaar te krijgen omdat ik c niet echt onder de knie heb en het dus daar niet voor elkaar krijg. dus eerst simpel beginnen om het te snappen.
Het is iets wat ik wil proberen tijdens m'n vakantie om wat bij te leren voordat ik me erin probeer te verdiepen in verdere studies.
 
Bedankt voor deze toelichting. Ik stel op prijs om te weten waar ik het voor doe.
 
Ik denk dat de formules van Anneke goed zijn.
Om de aantallen gelijk te maken neem je het maximum van haar uitkomsten en dan geef je dus altijd teveel of soms precies genoeg terug.
Zie mijn rode toevoegingen.....
 

Bijlagen

Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan