Wie kann man in Excel alle Kombinationsmöglichkeiten darstellen?

7 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Ich würde es rekursiv in VBA lösen.

Aber Vorsicht, bei Rekursionen stößt manch eine App an die Grenze ihrer Kapazitäten, was die Schachtelung von Funktionsaufrufen betrifft.

In dieser Funktion wird abwechselnd zwischen zwei Buchstaben ein Punkt gesetzt.

Übergeben wird zum Beispiel "Apfel". Dann werden die Punkte wie folgt dazwischen geschaltet:

A.pfel
A.p.fel
A.p.f.el
A.p.f.e.l
A.p.fe.l
A.pf.el
A.pf.e.l
A.pfe.l
Ap...
...
Woher ich das weiß:Studium / Ausbildung – Mathematik
Suboptimierer  07.09.2020, 16:53

Für bis zu 6 Buchstaben ohne VBA:

Irgendeine Zelle (Bsp. O1) definierst du als "Eingabe".
Irgendeine Zelle (Bsp. P1) definierst du als "AnzPkt" mit der Formel =LÄNGE(Eingabe)-1

A1:=WENN(B1<>"";WECHSELN(WECHSELN(TEIL(Eingabe;1;1)&B1&TEIL(Eingabe;2;1)&C1&TEIL(Eingabe;3;1)&D1&TEIL(Eingabe;4;1)&E1&TEIL(Eingabe;5;1)&F1&TEIL(Eingabe;6;1);"0";"");"1";".");"")

Herunterziehen bis A32.

B1: =WENN(ODER(SPALTE(A1)>AnzPkt;ZEILE(A1)>2^AnzPkt);"";(REST(ZEILE(A1)-1;2^(AnzPkt-SPALTE(A1)+1))<=2^AnzPkt/2^(SPALTE(A2))-1)+0)

Kopieren auf B1:F32. Das ist eine Hilfsmatrix, die die Permutationen darstellt.

2

Mit 34 wahlweise gesetzten oder nicht gesetzten Punkten macht das 2^34 mögliche "Wörter" mit einer mittleren Länge von ca. 50 Zeichen.

Dass das für Excel deutlich zu viel ist, wurde schon gesagt. Als Textdatei ist es 1 TB groß. Was machst Du dann damit? Es gibt Editoren, mit denen Du so eine Datei lesen kannst, aber die Lektüre ist langweilig und zeitraubend, ein Wort pro Sekunde gelesen, und schon nach 544 Jahren bist Du fertig ;-)

Vermutlich gibt es aber für Dein Problem eine bessere Lösung als das Erzeugen einer so langen Liste.

Woher ich das weiß:Studium / Ausbildung

Bei 35 Zeichen gibt es 34 Zwischenräume. In jedem Zwischenraum gibt es zwei Möglichkeiten. Damit gibt es insgesamt 2 hoch 34 = 17 Milliarden Kombinationen, genau 17.179.869.184. Bei angenommen 50 Zeilen je Seite braucht man dafür 343.597.383 Seiten. Auf Papier wäre das ein Turm von ca. 34 Kilometer Höhe. Toll! Was macht man damit?

Gibt es dafür eine Funktion oder einen Befehl in Excel?

Ist mir nicht bekannt, läßt sich aber simpel programmieren.

Da es sich bei mir um ein Wort mit 35 Zeichen handelt, kann man das nicht händisch machen.

Was? Die reichlich 17 Milliarden Varianten kannst du händisch nicht erstellen? Auswerten kannst du sie aber?

geri3d  07.09.2020, 07:52
läßt sich aber simpel programmieren.

Ich grüble gerade daran aber das Mid(... und verschachtelte For Schleifen bereitet mir soviel Kopfschmerzen dass ich die Frage am liebsten ignorieren täte, zumal es nur auf mehrere Tabellenblätter passt und ich vermute, dass Excel heillos abstürzt.

2
cg1967  08.09.2020, 01:20
@geri3d

Das Wort in Buchstaben splitten, jeweils ein Leerzeichen dazwischen, als Array speichern (oder das bearbeitete Wort als array behandeln.

Eine Schleife von 0 bis 2 exp (len(Wort) - 1) laufen lassen, im Array die binären Repräsentationen der 1 des Schleifenzählers mit Punkten ersetzen. Verbliebene Leerzeichen raushauen, Ergebnis speichern. Next.

3

Eine rekursive Funktion könnte das Problem recht gut lösen. Excel ist dafür allerdings nich besonders gut geeignet. In Java (bzw. jeder beliebigen Programmiersprache) geht es super.

Woher ich das weiß:Studium / Ausbildung
Neuerfan1  07.09.2020, 12:09

Grundsätzlich geht es natürlich auch mit dem VBA-Tool in Excel.

1