Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
820to824
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
820to824
820to824
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Alle Kombinationen auflisten

Alle Kombinationen auflisten
23.11.2006 10:58:35
Roger
Hallo zusammen
Mein Problem:
Ich möchte alle möglichen Kombinationen von 5 verschiedenen Wortsilben im Excel auflisten lassen. Dabei dürfen die Silben dürfen nicht doppelt vorkommen.
z.B.Wortsilben:
1) Ab
2) Ge
3) kü
4) eng
5) stra
Auflistung:
Ab Ge Kü eng stra
Ab Ge Kü stra eng
Ab Ge eng Kü stra
etc...
Wie kann ich das in Excel automatisieren?
Vielen Dank für Eure Hilfe...

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Alle Kombinationen auflisten
23.11.2006 13:08:54
Thomas
wär das nicht mit ner häufigkeitsberechnung schneller?
5*5=25
AW: Alle Kombinationen auflisten
23.11.2006 13:47:54
Roger
Hallo Thomas
Für mich ist die Auflistung und nicht die Anzahl der Kombinationen wichtig...
AW: Alle Kombinationen auflisten
23.11.2006 14:28:45
Yal
Hallo Roger,
ein schöne harte Nuss! wie ich mag.
Kennst Du dich aus mit Rekursivität?

Sub Main()
Dim T
'T = Array("Ab", "Ge", "kü", "eng", "stra") '<-- die Vorgabe
T = Array("A", "B", "C", "D") '<-- aber dmit ist es -zuerst- übersichtlicher
Rek "", T
End Sub


Sub Rek(Basis$, T)
Dim i%, j%, k%
Dim newBasis$, newT
If UBound(T) > 0 Then
ReDim newT(UBound(T) - 1)
For i = 0 To UBound(T)
newBasis = Basis & T(i)
k = 0
For j = 0 To UBound(T) - 1
If i = j Then k = 1
newT(j) = T(j + k)
Next j
Rek newBasis, newT
Next i
Else
Debug.Print Basis & T(0) ' oder irgendeine Herausgabe-Behandlung
End If
End Sub

Viel Spass
Yal
Anzeige
AW: Alle Kombinationen auflisten
23.11.2006 16:37:57
Roger
Hallo Yal
Vielen Dank für die rasche Hilfe.
Ich versteh zwar nicht alles von deinem Code, aber es funktioniert tiptop und ist genau was ich suchte....
Gruss Roger
AW: Alle Kombinationen auflisten
24.11.2006 11:30:35
Yal
Dann gebe ich Bischen mehr Information, da diese Algorythmus für andere auch nutzvoll sein kann:
Es handelt sich hier, um die Behandlung eines gesamtes Baumes.
Prinzipiel behandeln wir nur eine Stufe: Stamm mit eigene Äste (auch Parent/Child benennbar).
Durch die Rekursivität wird jeder Ast zu Stamm eines neues Baumes. Die nächste Stufe (auch Ebene oder Generation benennbar) wird behandelt.
Gestartet wird mit einem "Start"-Baum: leere Zeichenkette als Stamm und (in diesem Fall) 5 Äste als Array.
In dessen Behandlung wird geprüft, wieviel Ast diesen Baum hat. Hat er mehr als 1 (UBound > 0), werde jede Ast (For i = 0 To UBound(T)) als neuer Baum zur Behandlung geschikt (die Funktion ruft sich selbst: Rekursivität): bisherige Stammlinie ("Basis") plus Ast ("T(i)") als neuer Stamm und die restliche Kombi (For j = ...) als neue Äste.
Hat ein Baum nur noch ein Ast, wird die bisherige Stammlinie und den Ast herausgegeben und die Funktion wird abgeschlossen, d.h. wir verlassen den aktuellen Baum, runter auf dem vorherige Baum und behandeln den nächsten Ast.
Voilà
Rekursivität ist aber mit Vorsicht zu geniessen: die Grenze der gesamte Behandlung soll überschaubar sein. Ansonstens ist ein Computer abstürtzt ist ganz weit.
Yal
Anzeige

278 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige