• 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.
Toch nog niet correct

Het is toch nog niet altijd juist.

Stel je hebt volgende:
Aantal voor Waarde
20 2,00
30 1,00
40 0,50
50 0,20
60 0,10
200 106,00

en je wilt 10€ terug geven dan geef ik er exact 10 maar de Macro geeft maar 9,9€ terug.....
Dus als je rekening houdt met de initiele aantallen blijft het echt moeilijk om het correct te berekenen.
 
kan het niet makkelijker

Zou dit echt niet kunnen met een simpele formule zonder loops

als input de aantallen en de munten en als output de terug te geven aantallen.
 
De onjuiste uitkomst uit #21 heeft te maken met de binairy-to-decimal-bug in excel wat ik nog wel kan oplossen.
Maar een oplossing met simpele formules? Helaas. Misschien iemand anders.
 
Met de rode aanvulling in Timshel's :thumb: oplossing is dat dubbeltje ook weg

Code:
Sub tsh()
    Dim Bc, Bt(4), Bw, Br
    Dim i As Long
    Dim Amount As Single
    
    Amount = Range("B10")
    Bw = Array(2, 1, 0.5, 0.2, 0.1)
    Bc = Range("A2:A6")
    Br = [transpose(row(1:5)/row(1:5))]
    Do While Round(Amount - Application.SumProduct(Bw, Bt), 2) >= Application.SumProduct(Bw, Br)
        For i = 0 To 4
            If Bc(i + 1, 1) = Application.Max(Bc) Then
                Bt(i) = Bt(i) + 1
                Bc(i + 1, 1) = Bc(i + 1, 1) - 1
                Br(i + 1) = 1
            Else
                Br(i + 1) = 0
            End If
        Next
    Loop
    For i = 0 To 4
        Bt(i) = Bt(i) + Int([COLOR="#FF0000"]Round[/COLOR](Amount - Application.SumProduct(Bw, Bt)[COLOR="#FF0000"], 2[/COLOR]) / Bw(i))
    Next
    Range("F2:F6") = Application.Transpose(Bt)
End Sub
 
Ik dacht meer aan:

Code:
Sub M_snb()
   sn = Array(200, 100, 50, 20, 10)
   sp = sn
   
   Z = 100 * [B10] Mod 380
   For j = 0 To UBound(sn)
      sp(j) = 100 * [B10] \ 380 + Z \ sn(j)
      Z = Z Mod sn(j)
   Next

   Cells(2, 9).Resize(5) = Application.Transpose(sp)
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan