Excel: Maximale Summe mit Werten in bestimmter Reihenfolge nicht überschreiten

Soph

Newbie
Registriert
Okt. 2017
Beiträge
3
Hallo zusammen,

ich hätte folgende Frage:

Die Werte in Spalte B sollen eine bestimmte Summe (50) nicht überschreiten. Allerdings sollen nicht einfach die ersten Werte verwendet werden. Stattdessen sollen die Werte in Abhängigkeit der Zahlen in Spalte D entweder 0 oder 6 betragen. In aufsteigender Reihenfolge der Werte in Spalte D sollen die 6er eingetragen werden, solange die Summe nicht über 50 liegt.
Zum Schluss soll das Ganze wie in Spalte F aussehen.

Ich weiß nicht, wie ich das verständlicher beschreiben kann. Ich hoffe, die angehängte Datei verdeutlicht das Ganze.

Vielen Dank!

LG Sophie
 

Anhänge

  • Maximale Summe.PNG
    Maximale Summe.PNG
    14,7 KB · Aufrufe: 307
Eine Möglichkeit wäre, dass Du die 6er der Spalte b addierst die gleichzeitig eine 1 in der Spalte D enthalten. Du prüfst jedesmal ab, ob die Summer noch kleiner als 50 ist. Wenn Due summe dann immer noch kleiner ist, dann addierst Du alle 6er die in der Spalte D eine 2 enthalten, und prüfst dann auch immer ab ob die Gesammtsumme nochkleiner ist, usw.. Sobald die Summe die 50er granze überschreiten sollte brichst Du ab.

Du kannst folgenden Code als Sub Definieren, die Werte für die Variablen noch entsprechend anpassen und dann aufrufen. Ich habe den Code allerdings nicht getestet. Du musst Ihn evtl. noch debuggen.


Sub Summe_ermitteln

Dim Tabelle as string
Dim Abbruch as Boolean
Dim a as long
Dim Wert as Long
Dim Gewichtung as long
Dim LNr as long
Dim Grenze as long
Dim Summe as long
Dim Gefunden as boolean

Tabelle = "Tabelle1"
Summe = 0
Abbruch = false
Gefunden = False
LNr = 0
Grenze = Worksheets(Tabelle).Cells(21,2).Value

Do loop

LNr = LNr + 1

For X = 2 to 16

Wert = Worksheets(Tabelle).Cells(x,2).Value
Gewichtung = Worksheets(Tabelle).Cells(x,4).Value

if( LNr = Gewichtung) then
gefunden = true
if(summe + Wert) <= Grenze) then
Summe = Summe + Wert
else
abbruch = true
end i f
end if
Next X

if(gefunden = false) then
Abbruch = true
end if

while (Abbruch = false)

Worksheets(Tabelle).Cells(19,2).Value = Summe

End Sub
 
Zuletzt bearbeitet:
Zurück
Oben