Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1512to1516
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

Makro für Lösung

Makro für Lösung
18.09.2016 19:34:43
alifa
Hallo,
in Tabelle 1 Spalte A1 bis A20 sind alle 3-er Kombinationen aus 4(a,b,c,d) mit Zurücklegen.(aaa,aab,aac,aad,...) Nun möchte ich für a,b,c,d numerische Werte zuordnen.a=1 To 5; b=2 To 10; c=3 To 18 und d=5 To 25. Gesucht sind die (kleinsten) 4 Zahlen a,b,c,d, deren 3-er Kombinationen die meisten verschiedenen Summen bilden können.Beispiel: mit a=1,b=2,c=3,d=6 kann man 16 verschiedene Summen bilden. Für Hilfe danke ich im Voraus
VG Erhard

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
18 mit 1,2,5,11
18.09.2016 21:08:24
Michael
Hi Erhard,
stimmt das?
Errechnet wurde das so:
Option Explicit
Sub rechnen()
Dim a&, b&, c&, d&
Dim z&, s&, s0&
Dim aA, aE
Dim o As Object, o2 As Object
Set o = CreateObject("scripting.dictionary")
Set o2 = CreateObject("scripting.dictionary")
aA = Range("A1:C20")
For a = 1 To 5
For b = 2 To 10
For c = 3 To 18
For d = 5 To 25
For z = 1 To 20
s0 = 0
For s = 1 To 3
If aA(z, s) = "a" Then
s0 = s0 + a
Else
If aA(z, s) = "b" Then
s0 = s0 + b
Else
If aA(z, s) = "c" Then
s0 = s0 + c
Else
s0 = s0 + d
End If
End If
End If
Next
If o(s0) = 0 Then o(s0) = 1
Next
If o2(o.Count) = 0 Then o2(o.Count) = a & "," & b & "," & c & "," & d
'    Stop
Set o = CreateObject("scripting.dictionary")
'    MsgBox o.Count
Next
Next
Next
Next
z = 1
For Each aE In o2.keys
Range("E" & z) = aE
Range("F" & z) = o2(aE)
z = z + 1
Next
Range("E1").CurrentRegion.Sort Range("e1"), xlDescending
End Sub

mit den Buchstaben nicht (zusammen) in Spalte A, sondern in A1:C20, Spalte D MUSS leer sein, das Ergebnis steht in E1:Fxxx
Schöne Grüße,
Michael
Anzeige
AW: 18 mit 1,2,5,11
19.09.2016 00:03:27
alifa
Hallo Michael,
Hast du die 20 Kombinationen per Macro berechnen lassen? Zeile 13 und 16 beinhalten beide: bdd. Die Zeilen 12 und 15 sind bcd. Meine Kombi's sind mit Makro ermittelt worden. Dann ergeben 1,2,5,14 zwanzig verschiedene Summen. Oder sehe ich da etwas falsch?
VG Erhard
ja, aber nicht nur
19.09.2016 15:29:06
Michael
Hi Erhard,
da ist mir ein Fehler untergekommen! Mein erster Impuls war ja, Dich um die Tabelle mit den Kombinationen zu bitten, und dann hab ich's doch falsch abgeschrieben...
Na gut, wenn ich das ausbessere, bekomme ich auch Dein Ergebnis raus.
Aber: die Fragestellung war damit letztlich nur "halb" beantwortet, denn "gesucht sind die kleinsten Zahlen", und das Makro "merkt" sich nur das jeweils "erste" Auftreten einer bestimmten Anzahl unterschiedlicher Ergebnisse, und zwar das "erste" in der Reihenfolge der Schleifenabarbeitung.
Daß 1,2,5,14 (Summe daraus: 22) zwanzig Ergebnisse liefert, bedeutet nicht, daß nicht (rein hypothetisch) 1,2,7,9 (Summe daraus: 19) auch 20 liefern *könnte*. Es geht also letztlich um die Definition, was "kleinste Zahlen" sind.
Deshalb habe ich eine Kopie des Makros erstellt, die alle 20er-Ergebnisse ausspuckt, und siehe da, es gibt ein weiteres mit 22, nämlich 1,2,6,13 - beide sogar zweimal mit vertauschten c+d.
Datei anbei: https://www.herber.de/bbs/user/108260.xlsm
Schöne Grüße,
Michael
P.S.: wundere Dich nicht, daß jetzt statt abcd 1234 in den Zellen steht: ich hatte erhofft, daß der Algo dadurch etwas schneller wird. Das wird er auch, aber der Unterschied ist vernachlässigbar.
Anzeige
AW: ja, aber nicht nur
19.09.2016 16:06:44
alifa
Hallo Michael,
Die Definition "kleinste Zahlen" bezieht sich, genau genommen, nur auf die größte Zahl von den 4 Zahlen. Also ist 1,2,6,13 die Lösung im Sinne der Aufgabe
VG Erhard
AW: ja, aber nicht nur
19.09.2016 16:43:48
Michael
Hallo Erhard,
aha, so ist das.
Schöne Knobelei; steckt da außer Hirnjogging noch was dahinter?
Abgesehen davon: ich war erstaunt, daß es so viele 20er gibt: rund 2500 aus rund 15.000 - man könnte alle mal durchrechnen...
Schöne Grüße,
Michael
AW: ja, aber nicht nur
19.09.2016 16:56:58
alifa
Hallo Michael,
die Summe der vier unterschiedlichen Zahlen ist nicht relevant. Primär ist die größt mögliche Anzahl der gebildeten verschiedenen Summen der 3-er Kombinationen. Die kann also höchstens 20 sein. Also sollte man nur diese suchen. Bei den vielen Lösungen fiel mir 1,2,8,12 auf. Das ist die Gruppe mit der kleinsten größten Zahl(12). Man müsste alle möglichen 20-er Gruppen der 3-er Kombinationen prüfen, ob deren jeweiligen Summen alle unterschiedlich sind.
VG Erhard
Anzeige
schau mal...
19.09.2016 18:28:30
Michael
Hi Erhard,
jetzt sind wir hart an der Forumsgrenze...
Ich habe noch ein paar Subs eingebaut, als da wären:
a) Sortierung a-d, bevor sie ins Dictionary kommen: weil sowieso alle möglichen Kombinationen berechnet werden, sind 1,2,6,13 und 1,2,13,6 gleichwertig; durch die Sortierung fliegen hier die "Doppelten" raus.
b) zu den jeweiligen a-d ab Spalte P (nicht in einer, sondern in vier Spalten und =MIN) werden ab Spalte T bzw. U alle Summen ausgegeben. Hier kannst Du mal mit verschiedenen Sortierungen experimentieren, z.B. 1: S, 2. R usw., außerdem könnte man die Summen auch noch durch den Bubblesort jagen.
Die Datei: https://www.herber.de/bbs/user/108266.xlsm
Schöne Grüße,
Michael
Anzeige
AW: schau mal...
19.09.2016 20:23:28
alifa
Hallo Michael,
nun danke ich für die Hilfe. Manchmal kommt man auf komplizierte Art zur einfachen Lösung. Mein einfaches Macro findet 2 Lösungen: 1,2,8,12 und 1,2,9,12. Ich entschuldige mich für die nicht ganz eindeutigen Angaben. Eine gute Zeit!
Erhard
ok, danke für die Rückmeldung,
19.09.2016 21:12:08
Michael
Erhard,
schöne Grüße zurück,
Michael

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige