Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Jeweils ein Wert aus 5 Blöcken und alle Kombis sortieren
#1
Ola!

Wie kann ich aus jedem Block immer einen Wert berücksichtigen und dann noch alle Reihenfolgen/Kombinationen erstellen:

Block1
c1-11
c1-12

Block2
c1-21
c1-22

Block3
c1-31
c1-32

Block4
c1-41

Block5
c1-51
c1-52
c1-53


Ein (neuer) Block mit jeweils einem Wert wäre zum Beispiel:

c1-11
c1-21
c1-31
c1-41
c1-51

oder

c1-12
c1-21
c1-31
c1-41
c1-53

usw.

Ein weitere unterschiedliche Reihenfolge wäre zum Beispiel:

c1-51
c1-11
c1-21
c1-31
c1-41

oder

c1-12
c1-21
c1-53
c1-31
c1-41

usw.
Antworten Top
#2

.xlsx   Mappe.xlsx (Größe: 9,92 KB / Downloads: 6)
Kopiere Zeile 8 runter bis Zeile 31 (24 Kombinationen). Die Begriffe "Permutation" in der Datei sind falsch; es handelt sich um Kombinationen.

Die Permutationen, die Du nun noch zusätzlich haben willst, sind hier nicht mit drin. Sie vergrößern die 24 Kombinationen (2*2*2*1*3) um den Faktor 5! auf insgesamt 2880 Ergebnisse, also (2*2*2*1*3)*(1*2*3*4*5).

Hier die Formel-Lösung für Auflistung von Permutationen von maximal 8 Zeichen (Deine c-51 müssten dafür temporär durch 1 Zeichen ersetzt werden, so dass Du 5 Zeichen hättest).
[-] Folgende(r) 1 Nutzer sagt Danke an LCohen für diesen Beitrag:
  • PeterN
Antworten Top
#3
Hi

Fangen wir hinten an.
Zitat:und dann noch alle Reihenfolgen/Kombinationen erstellen
Das sollte mit dieser Vorlage funktionieren.

.xlsm   Kombinationen 2.xlsm (Größe: 20,29 KB / Downloads: 6)

Zitat:Wie kann ich aus jedem Block immer einen Wert berücksichtigen
Kann man unter der Verwendung der Excelfunktionen Zufall.... machen. Um dabei aber zu helfen, wäre es sinnvoll den richtigen Tabellenaufbau zu sehen (Bsp.Datei).

Gruß Elex
[-] Folgende(r) 1 Nutzer sagt Danke an Elex für diesen Beitrag:
  • PeterN
Antworten Top
#4
Danke euch Beiden!

Ich nehme zuerst die Mappe von LCohen und anschließend die Kombinationen 2 von Elex. Fertig!

Nochmals herzlichen Dank!
Antworten Top
#5
Hier noch mal zusammengefasst:


.xlsx   181114 CEF17993 Alle Kombinationen oWdh permutieren.xlsx (Größe: 12,42 KB / Downloads: 9)

Bitte an Strg-U (und Strg-R in den Sort-Blättern) denken! In jedem der 4 Blätter! Direkt nach dem Öffnen, keine Cursortaste vorher verwenden.

Spart Traffic und Speicherplatz.
Antworten Top
#6
Folgender Code erstellt die Datei auch. Seltsamerweise funktioniert - in Excel 365 - die Formel im Blatt Sort1 erst, wenn man sie mit F2 Enter einmal anfasst (was dann gleich der ganzen Spalte hilft). Ich habe 2 Stunden versucht, das zu umgehen bzw. zu verstehen. Es ist mir noch nicht gelungen. Vielleicht kann jemand das ja mal ausprobieren, entweder in der gleichen oder einer anderen Excel-Version. Das wäre sehr nett!

Hinweis: Makro benötigt ca. 8 Sekunden, da ca. 30.000 Formeln entstehen.

EDIT: die beiden fettgedruckten Zeilen .FormulaR1C1 = .FormulaR1C1 (sind hier auskommentiert) beheben das Malheur. Aber das kann es ja wohl nicht sein? 

Sub AlleSpalteneintraegeKombinierenUndPermutieren()
'https://www.clever-excel-forum.de/thread-17993.html
Workbooks.Add xlWorksheet: ActiveSheet.Name = "Komb": With ActiveWorkbook.Names
.Add Name:="KombAbHier", RefersToR1C1:="=MAX(1,PRODUCT(COUNTA(R[-5]C:R[-1]C),RC[1]))"
.Add Name:="KombFeld", RefersToR1C1:="=INDEX(R1C:R5C,MOD((ROW(R[-7]C)-1)/R6C[1],R6C/R6C[1])+1)"
.Add Name:="K", RefersToR1C1:="=Komb!R6C1"
[A1:E1] = Split("1-1 2-1 3-1 4-1 5-1")
[A2:E2] = Split("1-2 2-2 3-2  5-2")
[A3:E3] = Split("    5-3")
[A6:F6].FormulaR1C1 = "=KombAbHier"
[A8:E31].FormulaR1C1 = "=KombFeld"
[A1:F6].Interior.Color = 44444
Sheets.Add: ActiveSheet.Name = "Perm"
[A1] = 12345: [E1].FormulaR1C1 = "=COUNTA(C[-4])": [E2] = "http://excelformeln.de/formeln.html?welcher=325"
[A2].FormulaR1C1 = "=LEFT(INDEX(C,RC[2]),LEN(R1C)-RC[1]-1)&RIGHT(INDEX(C,RC[2]),RC[1])&LEFT(RIGHT(INDEX(C,RC[2]),RC[1]+1),1)"
[B2].FormulaR1C1 = "=9-MATCH(0,INDEX(MOD(ROW()-1,FACT(9-COLUMN(R[0]C1:C8))),),-1)"
[C2].FormulaR1C1 = "=ROW()-FACT(RC[-1])": [A2:C120].FillDown
.Add Name:="P", RefersToR1C1:="=Perm!R1C5"
Sheets.Add: ActiveSheet.Name = "Sort1"
[A1:E2880].FormulaR1C1 = "=INDEX(Komb!C1:C10,MOD(ROW(INDEX(C,K+ROW()-1)),K)+ROW(Komb!R8C1),MID(INDEX(Perm!C1,ROW(INDEX(C,K+ROW()-1))/K),COLUMN(),1))"
'hier passiert es!
'[A1:E2880].FormulaR1C1 = [A1:E2880].FormulaR1C1
Sheets.Add: ActiveSheet.Name = "Sort2"
.Add Name:="Sort2", RefersToR1C1:="=INDEX(Sort1!C1:C10,TRUNC(ROW(INDEX(C,P+ROW()-1))/P)+MOD(ROW()*K-K,K*P),COLUMN())"
[A1:E2880].FormulaR1C1 = "=Sort2"
'[A1:E2880].FormulaR1C1 = [A1:E2880].FormulaR1C1
End With: End Sub
Antworten Top
#7
Excel2007

Füge ich den Code in einem allg. Modul ein funktioniert es. Alle Formeln werden auch sofort berechnet.
Zeit 1-2s
Sort2 = 2880 Perm.
Sort1 = 2880 in anderer Reihenfolge
Perm = die 120 Permut. mit der Formel von Excelformeln
Komb = die 24 Kombis
 
Codeausführung aus dem Modul Tabelle1 geht nicht.
Antworten Top
#8
Danke, elex! Also ein Bug in 365. Es braucht einen Tritt. 

Btw: Konstruktionsmakros gehören immer in ein Modul, kein Klassenmodul. Die resultierende Datei ist dann ohne VBA.
Antworten Top
#9
Zur Erklärung der Ausführungsgeschwindigkeit (vermeintliche 8 statt 1-2 Sekunden, siehe aber unten):

Ich hatte in meinem Leben immer PC's, die weit unter dem Optimum sind. Auch heute kaufe ich mir solche bewusst. Der Grund: Nur so wird man immer angehalten, bei Lösungen mit Ressourcen sparsam umzugehen. Produktiv programmieren muss ich zum Glück nicht (oder kaum).
  1. Surface Pro4 m3 4GB 128GBSSD Win10Pro Office365 (2016 € 1050 mit Stift und Covertastatur (gab's danach noch billiger))
  2. Akoya MD61900 m3 4GB 64GBeMMC Win10Home Office365 (2018 € 250 herabgesetzt bei Aldi)
  3. ASUSeeePC900 AtomN270 1GB 12GBSSD WinXPHome Office2000 (2009 € 210 (neu) bei ebay in einer Massenaktion)
(eMMC ist bekanntlich die sehr viel langsamere Variante einer elektronischen Disk; vermutlich ist das auch bei dem ASUS der Fall)

Bislang habe ich nur ein Office pro PC installiert. Ich werde mir aber vermutlich einen Mini-PC (Desktop) für ca. € 200-400 zulegen, auf dem ich 2000/2010/365 installiere (ich habe zwei Office2000 Vollversionen). Dann kann ich leichter testen.

Daher sind meine gemessenen Zeiten immer länger, als es bei dem Schnitt aller wäre.

Überraschung heute morgen: Der Fehler taucht nur beim Surface (mit 365) auf. Es benötigt 8 Sekunden und hat irgendwo anscheinend ein Problem. Beim Akoya sind es nur etwa 3 Sekunden und beim Asus (dem Uralt-PC mit SingleCore) sogar nur 1,2 Sekunden: Excel2000 ist eben höllisch schnell.
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste