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

Wertabhängig Kombinationen herausfiltern

Wertabhängig Kombinationen herausfiltern
Reinhard
hallo Wissende,
sorry, besserer Betreff ist mir nich eingefallen fürs Archiv, wer mag kann ihn ja verbesseren, dankeschön.
Tabellenblatt: [Mappe1]!Tabelle1
│ A │ B │
──┼───┼───┤
1 │ A │ 1 │
──┼───┼───┤
2 │ B │ 1 │
──┼───┼───┤
3 │ C │ 4 │
──┼───┼───┤
4 │ D │ 1 │
──┼───┼───┤
5 │ E │ 3 │
──┼───┼───┤
6 │ F │ 7 │
──┼───┼───┤
7 │ G │ 2 │
──┼───┼───┤
8 │ H │ 2 │
──┴───┴───┘

Aus dieser zweispaltigen Tabelle möchte ich in Zellen untereinander auflisten welche Kombinationen es da gibt um aus den Werten in B die Zahl 5 zu bilden.
D.h. es sollte dann so aussehen in der Ergebnisspalte:
A,C
A,B,E
A,B,D,G
A,B,D,H
usw.
Was ich mir zutraue ist, alle möglichen Kombinationen zu ermitteln aber das gibt eine irre lange Rechenzeit.
Und wenn es nicht wie hier 8 Datenzeilen sind sondern 100 dann kann man das ohne Gray-Computer vergessen :-)
Bliebe m.W. noch eine rekursive Funktion. Naja, meine Versuche damit, vor einiger Zeit, endeten in Tragödien. Mal Stapelfehler, Stapelüberlauf oder es klappte sonstwie nicht :-(
Ich habe jetzt schon paar tage lang immer mal so im Internet und auch hier im Archiv gesucht nach Kombinationen, Permutationen usw. Da findet man schon reichlich Treffer.
Fand auch einiges, vieles, auch schicke kleine rekursive Funktionen. Leider bin ich unfähig die für dieses Problem anzupassen.
Gruß
Reinhard
Gruß
Reinhard

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Wertabhängig Kombinationen herausfiltern
11.12.2011 23:34:19
fcs
Hallo Reinhard,
hier mal mein Ansatz. Bei 100 Einzelwerten und vielen 1er-Werten daurt die Ausführung schon ein paar Sekunden.
https://www.herber.de/bbs/user/77933.xls
Gruß
Franz
Scherzkeks :-)
12.12.2011 01:20:16
Reinhard
Hallo Franz,
was interessieren mich da paar Sekunden *gg*
Alle meine Andenkungen das mit Schleifen zu lösen habe ich gar nicht codiert weil ich da auf Tage, Wochen, Monate kam.
Daher kam ich auf rekursiv, dummerweise habe ich da Null Ahnung.
Genauer gesagt, ich sah schon rekursiven Code und habe die Codes auch durch genauer draufschauen verstanden, ABER so den Durchblick habe ich dadurch nicht gewonnen um selbst in der Art ein Problem zu lösen:-(
Bin müd, deine mappe schaue ich morgen an, Gut's Nächtle.
Gruß
Reeinhard
Anzeige
Halte Bilden aller Kombinationen für den ...
13.12.2011 08:41:48
Luc:-?
…falschen Weg in diesem Fall, Reinhard & Franz,
begründet habt ihr's ja schon selbst. Es könnte bspw die HÄUFIGKEIT bemüht wdn, um zu ermitteln, welche, das Kriterium überhpt selbst erfüllende Elemente wie oft auftreten. Dann könnte man mit den meistvorhandenen u/o denen mit kleinstem Wert beginnen. Ihre Häufigkeit in bezug zum Kriterium wäre dann schon mal eine Kombinationsgrenze. Dann diese linearen Gruppen elementweise immer dann austauschen, wenn es Alternativen gibt, deren Anwendung noch das Kriterium erfüllt. Wird mit einem letztmöglichen Element das Kriterium überschritten, muss solange rückwärts gegangen wdn, bis sich eine neue Alternative auftut.
Dafür kannst du dir ja mal einen klasischen PAP aufzeichnen, Reinhard, das macht das ggf leichter. Hilfreich kann auch das Ausprobieren einzelner Schritte mit ZellFmln sein, damit man erst mal eine Strukturübersicht eines möglichen Ablaufs bekommt.
Das Ganze ist jedenfalls sehr komplex und an den Alternativenwechslungen hapert's dann bei FmlModellen auch. Trotz Hilfszellen noch und nöcher wdn die Fmln immer länger, aber man kann wenigstens sehen, wo diese Stellen liegen. Also keine Arbeit für mal eben zwischendurch bzw aus Jux und Dallerei. Es müssen schon schwerwiegende Gründe vorliegen, so etwas zu machen. Und jetzt vor Xmas wird die Zeit schnell knapp.
Gruß Luc :-?
Anzeige
AW: Optimierter Code
13.12.2011 21:57:23
fcs
Hallo Luc, Hallo Reinhard,
ich hab meinen Code noch einmal optimiert.
In meiner 1. Version war noch eine "unglückliche" Konstellation enthalten, so dass die gleichen Kombinationen mehrfach ermittelt wurden, die ich dann durch eine Prüfung aus der Ergebnisliste raushalten mußte.
Die neue Version hat dieses Problem nicht und ist entsprechend schneller.
https://www.herber.de/bbs/user/77969.txt
Im Prinzip verfolgt meine Lösung Luc's Grundidee nicht alle möglichen Kombinationen zu prüfen, sondern nur bei den sinnvollen/zielführenden Kombinationen Aufwand zu treiben.
Ich erreiche das dadurch, dass ich die Ausgangsliste als erstes absteigend nach den Werten sortiere.
In den Rekursionen wird dann immer eine Ebenen nach oben gesprungen, wenn die Summe der Kombinationswerte den Sollwert überschreitet. Für die zielführenden Kombinationen werden dann immer nur noch die kleineren Werte Richtung Ende der sortierten Liste betrachtet.
Sind bei 100 Einzelwerten viele 1er in der Liste, dann überschreitet die Gesamtzahl der möglichen Kombinationen schnell die max. Zeilenzahl im Blatt von 65536.
Gruß
Franz
Anzeige
AW: Optimierter Code
14.12.2011 10:27:56
Reinhard
Hallo Franz,
dankeschön für deine Mühe. Natürlich auch Dank an Luc.
Gruß
Reinhard
Bitte sehr! ;-) Gruß owT
14.12.2011 16:54:20
Luc:-?
:-?
Ja, sehr schön, soweit war ich noch nicht, ...
14.12.2011 16:53:06
Luc:-?
…hatte aber schon mal auf der Suche nach Ordnungsprinzipien mit Fmln experimentiert. Dabei wurde mir klar, dass es sich hierbei eigentlich um Kombinationen mit Teilwiederholungen handeln müsste → Anzahl relativ schwierig zu berechnen. Aber auf dieser Basis und der Frequenz der BspWerte habe ich versucht, die Ausgangslage zu berechnen. Das Problem dabei ist natürl, einen möglichst einheitl Algorithmus abzuleiten. Das ist mir nur zT gelungen, aber als Ansatz für eine VBA-Umsetzung bzw ein Fml-Lösungsschema hätte es dienen können. Die Auskombination der einzelnen Varianten der Basisgruppen war dann auch mit Fmln relativ leicht, wenn man mal von gewissen Trial&Error-Unzulänglichkeiten absieht. Das Ergebnis stelle ich hier auch mal als Bild ein, obwohl so etwas natürl viel zu aufwendig im Großversuch wäre. Aber viell entwickelt ja mal jemand (der VBA nicht mag bzw nicht verwenden kann) daraus ein rationales Lösungsschema für so etwas — wer weiß … ;-)
Userbild
Übrigens ist die Überschrift Frqz ein Fehler, den ich leider erst jetzt bemerke. Die hatte ich zwar ermittelt, aber letztlich nicht in diese Tab aufgenommen. Hier stehen natürlich die Wertigkeiten zu den Symbolen in der 2.Spalte. Und weil ich schon dabei bin — die letzte Fml steht natürl in E68[:G72] (mit Ausnahme von G68 u.G72 — auch so eine kleine Unzulänglichkeit).
Gruß Luc :-?
Anzeige
Korrigierte Darstellung zwecks besseren ...
15.12.2011 11:50:40
Luc:-?
…Verständnisses:
 ABCDEFG
61Basiskompp/ElementeKompElement–Wertigkeit–FrequenzÜberlängeLängendiffz
62ABDGH12(irrelev F>Krit)-22
63ABDGH123 -22
64ABDE131 -12
65ABDC141 -22
66GHE232 -21
67122alle KomppElementkombinationen
6800-11ABDGABDH 
6900-12AGHBGHDGH
701102ABEBDEADE
7120-12ACBCDC
722-102GEHE 
73Relevante Formeln:A68[:A72]:=D62-G6213SummKrit:5
74B68[:B72]:=$C$61-LÄNGE(A62)*C62+G62-LÄNGE(B62)*D62F62[:F66]:=$G$73-LÄNGE(A62)*C62-LÄNGE(B62)*D62
75C68[:C72]:=$C$61-C62*G62-LÄNGE(B62)*D62G62[:G66]:=LÄNGE(B62)*D62+$F62
76D68[:D72]:=INDEX(A$67:C$67;VERGLEICH(0;A68:C68;0)+(ZEILE(1:1)=2))
77E68[:G72]:=WAHL($D68;$A62&TEIL($B62;SPALTE(A:A);1);WENN(ODER(SPALTE(A:A)-2≤0;REST($D62;2)=0);
78                   "";TEIL($A62;SPALTE(A:A)-2;1))&TEIL($A62;SPALTE(A:A);($G$73-$D62*LÄNGE($B62))/$C62)&$B62)

Generated by Range2HTML in FXsubset — created by LSr : CyWorXxl

Luc :-?
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige