Discussion:
Permutationen in Excel
(zu alt für eine Antwort)
mace82
2008-06-11 08:26:20 UTC
Permalink
Ein Ha
llo an alle,

wie bringe ich Excel dazu mir für 48 Variablen alle möglichen
Kombinationen dieser Variablen auszuspucken?
Ich hab 3 Variablen und 16 Messpunkte (also 48 Daten), diese sind
folgendermaßen angeordnet:

Messpunkt 1 Messpunkt 2 ... usw
Variable a
Variable b
Variable c

Wäre super, wenn ihr mir helfen könntet!

Grüße
Andre
Peter Schleif
2008-06-11 16:25:50 UTC
Permalink
Post by mace82
wie bringe ich Excel dazu mir für 48 Variablen alle möglichen
Kombinationen dieser Variablen auszuspucken?
Bist Du sicher, dass Du *Permutationen* haben willst?

48! = 1,24 * 10^61

Bisschen viel. Nicht nur für Excel.

Oder habe ich dich falsch verstanden?

Peter
mace82
2008-06-12 10:00:35 UTC
Permalink
Post by Peter Schleif
Post by mace82
wie bringe ich Excel dazu mir für 48 Variablen alle möglichen
Kombinationen dieser Variablen auszuspucken?
Bist Du sicher, dass Du *Permutationen* haben willst?
48! = 1,24 * 10^61
Bisschen viel. Nicht nur für Excel.
Oder habe ich dich falsch verstanden?
Peter
Das sollten 16 mal 16 mal 16 mögliche Kombinationen sein.
Klaus "Perry" Pago
2008-06-13 17:47:11 UTC
Permalink
Hallo Andre,
Post by mace82
Das sollten 16 mal 16 mal 16 mögliche Kombinationen sein.
vielleicht hilft dir ja folgende Vorgehensweise weiter:

1. Zahlen von 0 bis 4095 erzeugen
2. Umwandlung dieser Zahlen in 3-stellige Hexadezimalzahlen
3. Zerlegen der Hex-Zahlen in drei einzelne Hex-Ziffern
4. Umwandeln der Hex-Ziffern in Dezimalzahlen.

Der Rest ist dann Adressrechnung - ein Beispiel findest du hier:

http://www.klaus-pago.de/andre.xls

Gruß
Klaus
Peter Schleif
2008-06-14 06:47:51 UTC
Permalink
Post by mace82
Das sollten 16 mal 16 mal 16 mögliche Kombinationen sein.
Das sind dann drei verschachtelte For-Next-Schleifen. Rekursion lohnt
sich hier IMHO nicht, weil ja die Anzahl der Schleifen feststeht und
auch nicht zu groß ist. Angenommen deine Tabelle ist folgendermaßen
aufgebaut:

+-----+------------+-------------+-------------+-----+--------------+
| | A | B | C | ... | Q |
+-----+------------+-------------+-------------+-----+--------------+
| 1 | | Messpunkt 1 | Messpunkt 2 | ... | Messpunkt 16 |
+-----+------------+-------------+-------------+-----+--------------+
| 2 | Variable a | a1 | a2 | ... | a16 |
+-----+------------+-------------+-------------+-----+--------------+
| 3 | Variable b | b1 | b2 | ... | b16 |
+-----+------------+-------------+-------------+-----+--------------+
| 4 | Variable c | c1 | c2 | ... | c16 |
+-----+------------+-------------+-------------+-----+--------------+

a1,a2,...,b1,b2,...usw sind deine 48 Daten. Dann könntest Du die 4096
Kombinationen untereinander (z.B. ab Zeile 6) ausgeben. Die Frage ist
nur: _Was_ möchtest Du ausgeben? Im folgenden Beispiel sind es einfach
nur die Werte - verteilt auf die drei Spalten A:C (siehe Tabelle). Es
sind aber auch durchaus andere Verknüpfungen vorstellbar. Dazu
müsstest Du bitte noch mal präzisieren, was Du unter "ausspucken"
verstehst.

Peter


Sub kombinationen1()
Dim m1 As Integer
Dim m2 As Integer
Dim m3 As Integer
Dim nr As Integer

For m1 = 1 To 16
For m2 = 1 To 16
For m3 = 1 To 16
nr = (m1 - 1) * 16 * 16 + (m2 - 1) * 16 + m3
Cells(nr + 5, "A") = Cells(2, m1 + 1)
Cells(nr + 5, "B") = Cells(3, m2 + 1)
Cells(nr + 5, "C") = Cells(4, m3 + 1)
Next
Next
Next
End Sub

+--------+-----+-----+-----+
| | A | B | C |
+--------+-----+-----+-----+
| ... | | | |
+--------+-----+-----+-----+
| 6 | a1 | b1 | c1 |
+--------+-----+-----+-----+
| 7 | a1 | b1 | c2 |
+--------+-----+-----+-----+
| 8 | a1 | b1 | c3 |
+--------+-----+-----+-----+
| ... | ... | ... | ... |
+--------+-----+-----+-----+
| 21 | a1 | b1 | c16 |
+--------+-----+-----+-----+
| 22 | a1 | b2 | c1 |
+--------+-----+-----+-----+
| ... | ... | ... | ... |
+--------+-----+-----+-----+
| 261 | a1 | b16 | c16 |
+--------+-----+-----+-----+
| 262 | a2 | b1 | c1 |
+--------+-----+-----+-----+
| ... | ... | ... | ... |
+--------+-----+-----+-----+
| 4101 | a16 | b16 | c16 |
+--------+-----+-----+-----+
mace82
2008-06-16 08:59:56 UTC
Permalink
Post by Peter Schleif
Post by mace82
Das sollten 16 mal 16 mal 16 mögliche Kombinationen sein.
Das sind dann drei verschachtelte For-Next-Schleifen. Rekursion lohnt
sich hier IMHO nicht, weil ja die Anzahl der Schleifen feststeht und
auch nicht zu groß ist. Angenommen deine Tabelle ist folgendermaßen
+-----+------------+-------------+-------------+-----+--------------+
| | A | B | C | ... | Q |
+-----+------------+-------------+-------------+-----+--------------+
| 1 | | Messpunkt 1 | Messpunkt 2 | ... | Messpunkt 16 |
+-----+------------+-------------+-------------+-----+--------------+
| 2 | Variable a | a1 | a2 | ... | a16 |
+-----+------------+-------------+-------------+-----+--------------+
| 3 | Variable b | b1 | b2 | ... | b16 |
+-----+------------+-------------+-------------+-----+--------------+
| 4 | Variable c | c1 | c2 | ... | c16 |
+-----+------------+-------------+-------------+-----+--------------+
a1,a2,...,b1,b2,...usw sind deine 48 Daten. Dann könntest Du die 4096
Kombinationen untereinander (z.B. ab Zeile 6) ausgeben. Die Frage ist
nur: _Was_ möchtest Du ausgeben? Im folgenden Beispiel sind es einfach
nur die Werte - verteilt auf die drei Spalten A:C (siehe Tabelle). Es
sind aber auch durchaus andere Verknüpfungen vorstellbar. Dazu
müsstest Du bitte noch mal präzisieren, was Du unter "ausspucken"
verstehst.
Peter
Sub kombinationen1()
Dim m1 As Integer
Dim m2 As Integer
Dim m3 As Integer
Dim nr As Integer
For m1 = 1 To 16
For m2 = 1 To 16
For m3 = 1 To 16
nr = (m1 - 1) * 16 * 16 + (m2 - 1) * 16 + m3
Cells(nr + 5, "A") = Cells(2, m1 + 1)
Cells(nr + 5, "B") = Cells(3, m2 + 1)
Cells(nr + 5, "C") = Cells(4, m3 + 1)
Next
Next
Next
End Sub
+--------+-----+-----+-----+
| | A | B | C |
+--------+-----+-----+-----+
| ... | | | |
+--------+-----+-----+-----+
| 6 | a1 | b1 | c1 |
+--------+-----+-----+-----+
| 7 | a1 | b1 | c2 |
+--------+-----+-----+-----+
| 8 | a1 | b1 | c3 |
+--------+-----+-----+-----+
| ... | ... | ... | ... |
+--------+-----+-----+-----+
| 21 | a1 | b1 | c16 |
+--------+-----+-----+-----+
| 22 | a1 | b2 | c1 |
+--------+-----+-----+-----+
| ... | ... | ... | ... |
+--------+-----+-----+-----+
| 261 | a1 | b16 | c16 |
+--------+-----+-----+-----+
| 262 | a2 | b1 | c1 |
+--------+-----+-----+-----+
| ... | ... | ... | ... |
+--------+-----+-----+-----+
| 4101 | a16 | b16 | c16 |
+--------+-----+-----+-----+
Oh super, herzlichsten dank!!!
Danach hatte ich gesucht!

Loading...