Muß rausbekommen welche Einzelwerte bestimmte Gesamtwerte ergeben


Jan-Frederik Stieler

Monsterator
Moderator
Hallo,
ich habe zwei Gesamtwerte und viele Einzelwerte. Nun muß ich erörtern welche der Einzelwerte genau die Gesamtwerte ergeben.
Wie bekome ich den das hin ohne jetzt einfach alle Werte irgendwie zusammenzurechnen?

Viele Grüße
 

tombe

Erfahrenes Mitglied
Hallo Jan-Frederik,

ich hoffe mal du kannst noch was mit einer Lösung für dein Problem anfangen.
Der Tipp von Tom war wohl schon der richtige, musste mich aber erst mal durch das ganze durchlesen bis ich es so halbwegs verstanden habe. Deshalb hat es dann auch so lange gedauert.

Visual Basic:
'"gesamt" enthält den Gesamtwert
gesamt = 25
'das Array "a" enthält die Einzelwerte, sortiert in aufsteigender Reihenfolge
a = Array(1, 2, 3, 5, 7, 9)
'das Array "x" wird mit der gleichen Dimension wie "a" und den Werten "0" erstellt
'hiermit werden die Zahlen gekennzeichnet die den Gesamtwert bilden
x = Array(0, 0, 0, 0, 0, 0)

s = gesamt

max_werte = UBound(a)

For z = UBound(a) To 0 Step -1

    If s >= a(z) Then
        x(z) = 1
        s = s - a(z)
    Else
        x(z) = 0
    End If

Next z

For z = 0 To UBound(a)
    If x(z) = 1 Then Debug.Print a(z)
Next z
Dieses Beispiel nimmt als Gesamtwert die Zahl "25" und als Einzelwerte die Zahlen "1, 2, 3, 5, 7, 9".

Als Ergebnis kommt heraus: "1, 3, 5, 7, 9 "
 

Jan-Frederik Stieler

Monsterator
Moderator
Hallo Tombe,
natürlich kann ich damit noch was anfangen!
Super das du mir das in VB gezeigt hast, dann kann ich das auch in Excel verwenden.
Es geht nämlcih darum das ich öfters mal Einzahlungen habe die mehrere Aufträge zusammenfassen und der Kunde dann nicht die Rechnungsnummern mit angiebt und ich raten kann wann den die Zahlungen eingegangen sind. Weil ich bin zur Ist-Verbuchung veranlasst und da muß ich dann entsprechend die Buchungen vornehmen.

Viele Grüße
 

tombe

Erfahrenes Mitglied
Ist ja lustig das du es in Excel brauchst, genau damit habe ich das gemacht!

Wenn es um Rechnungsbeträge geht, dann sind das wohl auch mal Beträge mit Kommastellen. Habe es damit nicht getestet, hoffe es geht dafür auch.

Gruß Thomas
 

tombe

Erfahrenes Mitglied
Also das Skript arbeitet in der obigen Form nur mit ganzen Zahlen. Damit du auch Zahlen mit Kommastelle auswerten kannst ist aber nur eine Zeile zu ändern:

Visual Basic:
'so steht es jetzt drin
s = s - a(z)
'und so muss es geändert werden
s = s - Int(a(z))
Habe zum Testen den Gesamtbetrag "25,7" und die Einzelwerte "1 - 1,2 - 2 - 3,2 - 5,3 - 7, 9" genommen.

Als Ergebnis kam raus: "1,2 - 3,2 - 5,3 - 7 - 9"

Gruß Thomas