Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
24.04.2024 17:19:09
Anzeige
Archiv - Navigation
1516to1520
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Bestmögliche Kombination bilden

Bestmögliche Kombination bilden
07.10.2016 10:03:48
Olli
Moin zusammen,
ich bin mir nicht sicher, ob das nicht etwas zu viel von Excel verlangt ist, aber ich schildere mal mein Anliegen:
Ich habe eine Tabelle aus z.B. 20 verschiedenen Werten
5 - 13 - 1 - 3,5 - etc....
Kann Excel die bestmögliche Kombination aus diesen Werten bilden, um z.b. an die Zahl 50 heranzukommen und mir diese Kombination auswerfen?
Ich hoffe, ich konnte mich verständlich ausdrücken.
Danke für die Hilfe und Gruß
Olli

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bestmögliche Kombination bilden
07.10.2016 13:03:53
Michael
Moin, moin,
lad bitte ne Beispieldatei hoch, wie das aussieht: wo stehen die Zahlen? Wo steht die "50"? Wie soll das Ergebnis dargestellt werden?
Ansonsten fehlt Deiner Angabe die Info, was denn "bestmöglich" in diesem Zusammenhang heißen soll.
Schöne Grüße,
Michael
AW: Bestmögliche Kombination bilden
07.10.2016 13:33:53
Olli
Moin Michael,
die Datei, in der das ganze mit rein soll, kann ich hier nicht zur Verfügung stellen, von daher hier ein einfaches Beispiel.
In Spalte B sind die vorhandenen Daten.
Das Ziel ist die bestmögliche Kombination aus diesen Zahlen zu finden, um die 50 (Zelle G1) zu erreichen. Bestmöglich heißt, so nahe wie möglich an die 50 heran, ohne sie zu überschreiten.
Im Idealfall aus all den vorhandenen Zahlen aus Spalte B eine Kombinationsmöglichkeit finden, die genau 50 ergibt. Die zur Kombination "genutzten" Zahlen sollen dann in Spalte D ausgeworfen werden.
https://www.herber.de/bbs/user/108646.xlsx
Gruß
Olli
Anzeige
AW: Bestmögliche Kombination bilden
07.10.2016 13:43:30
Bernd
Servus,
kann die Tabelle vom größten zum kleinsten Wert sortiert werden, oder darf die Reihenfolge nicht verändert werden?
Grüße, Bernd
AW: Bestmögliche Kombination bilden
07.10.2016 13:44:33
Bernd
...und können Werte doppelt vorkommen?
AW: Bestmögliche Kombination bilden
07.10.2016 13:46:28
Olli
Hallo Bernd,
Sortiert werden darf die Tabelle und Werte können auch doppelt vorkommen.
Am Ende ist es wichtig, dass die zur Kombination herangezogenen Werte anhand des Namens Spalte A ausgegeben werden.
Die Reihenfolge spielt dabei keine Rolle.
Gruß
Olli
AW: Bestmögliche Kombination bilden
07.10.2016 14:13:45
Bernd
Servus Olli,
versuch mal folgenden Makrocode für deine Beispieldatei:

Option Explicit
Dim i As Integer
Dim Summe
Dim Kombi As String
Dim lz As Integer
Sub Summe50()
lz = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
Range("A2:B14").Select
Range("B2").Activate
ActiveWorkbook.Worksheets("Tabelle1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Tabelle1").Sort.SortFields.Add Key:=Range("B2"), _
SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Tabelle1").Sort
.SetRange Range("A2:B14")
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Summe = 0
Kombi = ""
For i = 2 To lz - 1
If i = 2 And Cells(i, 2).Value 
Grüße, Bernd
Anzeige
AW: Bestmögliche Kombination bilden
07.10.2016 15:11:24
Olli
Ich habe jetzt schon Feierabend gemacht.
Schaue es mir Montag an und gebe Rückmeldung!
Danke schon mal für die Mühe
AW: Bestmögliche Kombination bilden
07.10.2016 16:24:52
Michael
Hi,
jetzt bastel ich schon die ganze Zeit, dabei hat Bernd auch schon was gemacht.
Macht nix. Hier meine Variante, die auf einem Code von Daniel zur Kombinatorik fußt (link im Skript):
Sub Kombinatorik()
Dim x&, i&, z&   ' & = as long
Dim a, b         ' als Variant bzw. Array
Dim s#, bestS#   ' as double
Dim AnzahlVariablen&, AnzahlKombinationen&
Dim ziel#, zDelta#
Dim schonDa As Boolean
a = Range("B2:B14") ' hier ggf. dynamisch
b = a
AnzahlVariablen = UBound(a)
AnzahlKombinationen = 2 ^ AnzahlVariablen
ziel = Range("G1")
zDelta = ziel * 0.95   ' ab 5% unter Ziel
Range("L2").CurrentRegion.ClearContents
Range("L2").Resize(AnzahlVariablen) = a
z = 1
For i = 0 To AnzahlKombinationen - 1
s = 0
For x = 0 To AnzahlVariablen - 1
b(x + 1, 1) = (-((i And (2 ^ x)) > 0)) * a(x + 1, 1)
s = s + b(x + 1, 1)
' Falls das "erstbeste" passende Ergebnis gewünscht ***
'        If s  zDelta And s > bestS Then
'          Range("L2").Offset(, z).Resize(AnzahlVariablen) = b
'          If s = ziel Then
'            Range("D2").Resize(AnzahlVariablen) = b
'            Exit Sub
'          End If
'          bestS = s
'          Range("L1").Offset(, z).Value = s
'          z = z + 1
'        End If
' Falls eines aus mehreren passendes Ergebnis gewünscht ***
If (s  zDelta And s > bestS) Or _
s = ziel Then
Range("L2").Offset(, z).Resize(AnzahlVariablen) = b
Range("L1").Offset(, z).Value = s
If s = ziel And (Not schonDa) Then
Range("D2").Resize(AnzahlVariablen) = b
schonDa = True
End If
bestS = s
z = z + 1
End If
Next
'    If i Mod 1000 = 0 Then Stop ' bei sehr großer Anzahl evtl.
'    mit ProgressBar garnieren oder so...
Next
' optischer Schnickschnack ...
With Range("L2").CurrentRegion
.HorizontalAlignment = xlCenter
.Rows(1).Interior.ColorIndex = 15
.Rows(1).Font.Bold = True
.Columns(1).Interior.ColorIndex = 15
.Columns(1).Font.Bold = True
End With
End Sub
Datei: https://www.herber.de/bbs/user/108653.xlsm
Das Makro gibt je nach dem, welchen Codeteil Du auskommentierst, "nur" den erstbesten Treffer aus oder (das ist der jetzt NICHT auskommentierte Teil) sowohl den erstbesten als auch alle weiteren, rechts, ab Spalte L (das ist eine Wiederholung der Werte aus Spalte B) bzw. Spalte M.
Viel Spaß,
Michael
Anzeige
AW: Bestmögliche Kombination bilden
11.10.2016 21:05:53
Olli
Hallo zusammen,
Vielen Dank! Da kann ich super mit arbeiten.
Ich werde jetzt versuchen, das Ganze in meine Datei einzubauen, aber da sehe ich keine Probleme.
Ansonsten melde ich mich nochmal ;)
Vielen Dank!
AW: Bestmögliche Kombination bilden
12.10.2016 08:40:36
Bernd
Servus,
wobei der Algorithmus von Michael bzw. Daniel wahrscheinlich eher deiner Vorstellung entsprechen sollte. Mein Makro sortiert nur der Größe nach und addiert solange die Summe kleiner oder gleich 50 bleibt. "Optimal" ist das nicht...
Grüße, Bernd
Warum dann offen? owT
13.10.2016 06:53:24
Bernd

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige