Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: 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...
Anzeige

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
;
Anzeige
Anzeige

Infobox / Tutorial

Alle Kombinationen in Excel auflisten


Schritt-für-Schritt-Anleitung

Um alle möglichen Kombinationen von Wortsilben oder Zahlen in Excel aufzulisten, kannst Du die folgende VBA-Methode verwenden. Diese Methode nutzt Rekursion, um alle Kombinationen zu generieren. Hier ist eine Schritt-für-Schritt-Anleitung:

  1. Öffne Excel und drücke ALT + F11, um den Visual Basic for Applications (VBA) Editor zu öffnen.

  2. Füge ein neues Modul hinzu:

    • Rechtsklicke im Projektfenster auf "VBAProject (DeineDatei.xlsx)".
    • Wähle Einfügen > Modul.
  3. Kopiere den folgenden Code in das Modul:

    Sub Main()
       Dim T
       T = Array("Ab", "Ge", "kü", "eng", "stra") ' Deine Silben
       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) ' Ausgabe der Kombination
       End If
    End Sub
  4. Schließe den VBA-Editor.

  5. Führe das Makro aus:

    • Gehe zurück zu Excel und drücke ALT + F8, wähle Main und klicke auf Ausführen.
  6. Überprüfe die Ausgabe im "Immediate"-Fenster (Drücke CTRL + G im VBA-Editor, um es zu öffnen).

Diese Schritte ermöglichen es Dir, alle Kombinationen von Wortsilben aufzulisten.


Häufige Fehler und Lösungen

  • Fehler: "Zugriff verweigert"
    Lösung: Stelle sicher, dass Du die Makros in den Excel-Optionen aktiviert hast.

  • Fehler: "Typ nicht übereinstimmend"
    Lösung: Überprüfe, ob die Arrays korrekt definiert sind und keine leeren Werte enthalten.

  • Fehler: Ausgabe erscheint nicht
    Lösung: Stelle sicher, dass Du das "Immediate"-Fenster geöffnet hast, um die Kombinationen zu sehen.


Alternative Methoden

Falls Du keine VBA-Programmierung nutzen möchtest, kannst Du auch eine Excel-Formel verwenden, um einfache Kombinationen aufzulisten. Eine Kombination aus KONKATENIEREN und INDIREKT kann hilfreich sein, jedoch ist die Flexibilität und Anzahl an Kombinationen begrenzt.

Weitere Optionen sind Online-Tools, die alle möglichen Kombinationen auflisten, wie z.B. Generatoren für Buchstaben oder Zahlen.


Praktische Beispiele

  1. Kombinationen aus 4 Zahlen auflisten:

    • Wenn Du die Zahlen 1-4 kombinieren möchtest, kannst Du das Array entsprechend anpassen:
      T = Array(1, 2, 3, 4)
  2. Kombinationen aus 3 Buchstaben:

    • Für Kombinationen aus Buchstaben wie A, B, C:
      T = Array("A", "B", "C")

Tipps für Profis

  • Nutze die Debug.Print-Funktion, um den Code während der Entwicklung zu testen und die Ausgaben zu überprüfen.
  • Achte darauf, dass die Anzahl der Elemente im Array nicht zu groß ist, da dies die Leistung beeinträchtigen kann.
  • Experimentiere mit der Rekursionstiefe, um verschiedene Kombinationen zu generieren.

FAQ: Häufige Fragen

1. Wie kann ich alle möglichen Kombinationen auflisten online?
Du kannst Online-Kombinatorik-Tools nutzen, die speziell dafür entwickelt wurden, Kombinationen zu generieren. Diese bieten meist eine einfache Benutzeroberfläche.

2. Ist es möglich, Kombinationen aus mehr als 5 Elementen zu erstellen?
Ja, Du kannst die Anzahl der Elemente im Array erhöhen. Beachte jedoch, dass die Anzahl der Kombinationen exponentiell steigt, was die Berechnung verlangsamen kann.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige