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

Permutationen mit Wiederholung in Matrix

Permutationen mit Wiederholung in Matrix
03.03.2021 10:12:15
ThomasSchmidt
Hallo Zusammen,
hoffentlich bin ich hier richtig.. Ich bin neu hier und stehe vor folgendem Problem:
Ich habe eine binäre Variable (0/1) und suche für einen Vektor alle möglichen Kombinationen. Ok, das ist denke ich machbar und im Internet zu finden. Ich stehe allerdings zur Zeit vor dem Problem, jede dieser möglichen Kombinationen in je eine Spalte zu schreiben der folgenden Form:
-----------------------------------------------------------------------------------------------------------
Time___Knoten___Pfad_1___Pfad_2___...___Pfad_2^T
0_______1_______1_______1_______..._______0
1_______1_______0_______1_______..._______1
1_______2_______1_______1_______..._______1
..._______...._______...._______..._______..._______...
Was ich zur Zeit habe ist die Spalte TIME und KNOTEN sowie die obere Zeile (PFAD_1, PFAD_2...), was ich versuchen möchte ist dass ich alle denkbaren Kombinationen von 0 und 1 zu generieren und in die jeweilige PFAD_xxx Spalte (angefangen mit der Fett markierten) zu schreiben/Kopieren . Sorry vorab für die Darstellung, ich bin wie gesagt das erste Mal hier..
Da ich dies ca. 1200 Mal auf täglicher Basis machen muss mit jeweils variabler Vektorlänge (also innerhalb jeder Tabelle ist die Länge gleich, aber für verschiedene Tabellen kann diese unterschiedlich sein, daher müsste ich bezüglich der Vektorlänge flexibel sein: pro Tabelle gäbe es somit eine unterschiedliche Anzahl von Permutationen und damit auch Vektoren) wäre ich für einen Lösungsvorschlag in VBA dankbar. Ein paar Gehversuche habe ich schon, bei der Permutation und dem Befüllen der Zellen der jeweiligen Vektoren scheitere ich leider seit 3 Tagen...
Vielen lieben Dank vorab für jede Hilfe!
Thomas

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Schleife
03.03.2021 10:20:02
Fennek
Hallo,
so ganz kann ich es mir noch nicht vorstellen, aber als Einstige:

for i = 0 to 1
for ii = 0 to 1
'in die richtige Zelle schreiben
next ii
next i
Es kann viele geschachtelte For ... next geben.
mfg

AW: Schleife
03.03.2021 10:25:47
ThomasSchmidt
Hallo Fennek,
vielen Dank erstmal für Deine Antwort. Prinzipiell ja, diese For-Schachtelung habe ich zum Befüllen der Zellen bereits. bei dieser expliziten Methode bräuchte ich vermutlich so viele For-Schleifen wie es Permutationen gibt (genauer Anzahl an Permutationen), oder?
LG
Thomas

AW: Binär-Zahl
03.03.2021 10:35:53
Fennek
Eine 0/1 Permutation ist eine Binärzahl, z.B. die Zahlen 0...255 geben alle 8 bit Variationen.
Es ist möglich jede n-bit Binaärzahl auf n Spalten zu verteilen.

Anzeige
AW: Binär-Zahl
03.03.2021 10:56:23
ThomasSchmidt
Hallo Fennek,
danke für die Antwort, leider sehe ich gerade nicht, inwiefern mir diese Info bei meinem ursprünglichen Problem helfen könnte... :-(
Liebe Grüsse
Thomas

AW: beliebig viele Spalte mit 0/1
03.03.2021 11:08:15
Fennek
Als Idee:

Sub Spalte_0_1()
Dim Sp As Long
Dim WSF As WorksheetFunction: Set WSF = Application.WorksheetFunction
Sp = 10 'Anzahl der Spalten
bin = WSF.Dec2Bin(Sp)
For i = 1 To Len(bin)
ret = ret & Mid(bin, i, 1) & "|"
Next i
out = Split(ret, "|")
Cells(1, 1).Resize(, UBound(out) + 1) = out
Set WSF = Nothing
End Sub
Sp muss aber variabel nach Anzahl der bentigten Anzahl Spalten gesetzt werden.

Anzeige
AW: beliebig viele Spalte mit 0/1
03.03.2021 11:35:43
ThomasSchmidt
Hallo Fennek,
vielen Dank nochmals! ich werde versuchen, Deinen Code einzubauen und melde mich, ok?
Viele Grüsse
Thomas

AW: beliebig viele Spalte mit 0/1
03.03.2021 15:43:11
ThomasSchmidt
Hallo Fennek,
danke nochmals für den Sub()-Schnipsel. Das funktioniert auch mit ein paar Deklarationen gut und die Methode gefällt mir sehr. Bezüglich der ursprünglichen Frge bin ich mir nicht sicher, ob ich mich hier richtig ausgedrückt habe. Daher hier nochmals ein Versuch:
Ich bin auf der Suche nach einer Spaltenweise Ausgabe aller denkbaren Permutation einer Zahl von 0 und 1 innerhalb eines Vektors der Länge T. Also für T=3 wäre das also 2^T=8 Vektoren :
T____P_1:_____P_2:_____P_3:_____P_4:_____P_5:_____P_6:_____P_7:_____P_8:
1____|1|_______|1|_______|1|_______|1|_______|0|_______|0|_______|0|_______|0|
2____|1|_______|0|_______|1|_______|0|_______|1|_______|0|_______|1|_______|0|
3____|1|_______|1|_______|0|_______|0|_______|1|_______|1|_______|0|_______|0|
Natürlich habe ich viele davon (s. oben) und eben mit jeweils unterschiedlichen T.
In jede Spalte müsste quasi jede denkbare Reihenfolge der Nullen/Einsen eingefüllt werden...
Vielen lieben Dank auch an die Vorschläge mit den Excel-Funktionen- falls ich es in VBA nicht hinbekomme behalte ich das mal im Hinterkopf..
Viele Grüsse
Thomas

Anzeige
AW: beliebig viele Spalte mit 0/1
03.03.2021 17:44:44
Yal
hallo zusammen,
ich komme auf folgende verrückte Einfall:
=TEIL(DEZINBIN(ZEILE(A1);10);SPALTE(A1);1)
Wenn es mehr als 10 Spalten sein sollen, dann den 10 durch ein grösseren Zahl austauschen.
VG
Yal

AW: beliebig viele Spalte mit 0/1
03.03.2021 17:56:35
ThomasSchmidt
Hallo Yal,
danke für diese kreative Idee. Fennek hatte dies bereits in einem Sub() ebenfalls vorgeschlagen, daher denke ich dass das ein guter Ansatz ist. Was ich bräuchte wäre ein VBA script o.Ä.
Da die Tabelle systematisch befüllt wird denke ich dass die Logik, mit der man das befüllt vermutlich offensichtlich ist- leider bin ich zu blind dafür, das zu sehen.
..oder ich habe die Lösung bereits , nur sehe ich sie noch nicht :-)
Liebe Grüsse
Thomas

Anzeige
"noch offen" mache ich dann raus. oT
03.03.2021 21:09:33
Yal

AW: "noch offen" mache ich dann raus. oT
03.03.2021 21:44:55
ThomasSchmidt
Hallo Yal,
Lasse es bitte noch als offen stehen. Was ich sagen wollte ist, dass ich zwar einige gute Vorschläge erhalten habe, aber noch Hilfestellung brauche bei der Lösung des Problems..
Herzliche Grüße
Thomas

AW: Nachfrage
04.03.2021 10:17:13
Fennek
So ganz habe ich das Problem noch nicht verstanden:
Für eine beliebege Anzahl von Spalten sollen in vielen Zeilen alle Variationen von 0 und 1 gesetzt werden?
Wäre es die Lösung, wenn meine VBA-Code von 0 bis SP (alle Permutationen) jeweils in eine neue Zeile schreibt?

AW: Nachfrage
04.03.2021 15:03:27
ThomasSchmidt
Hey Fennek,
Ja, das wäre meine Vorstellung davon. Quasi in jede Spalte eine denkbare Permutation für die vorgegebene Länge, also z. B. (1,0,0) dann in die nächste Spalte z. B. (1,1,0) usw.
So dass alle denkbaren Permutation en spaltenweise nebeneinander stehen.
Ginge das?
Lg
Thomas

Anzeige
AW: Nachfrage
04.03.2021 16:35:13
Fennek
Unter LO lief es nicht, aber so ähnlich könnte es gehen:

Sub Spalte_0_1()
Dim Sp As Long
Dim WSF As WorksheetFunction: Set WSF = Application.WorksheetFunction
Sp = 10 'Anzahl der Spalten
bin = WSF.Dec2Bin(Sp)
ln = len(bin)
for r = 1 to Sp
bin = wsf.dezc2in(i,ln)
For i = 1 To Len(bin)
ret = ret & Mid(bin, i, 1) & "|"
Next i
out = Split(ret, "|")
Cells(r, 1).Resize(, UBound(out) + 1) = out
next r
Set WSF = Nothing
End Sub


AW: Schleife
03.03.2021 11:49:36
Daniel
Hi
die Permutationen kannst du mit folgender Formel darstellen:
=Rest(Quotient(Zeile(A1)-1;2^(Spalte(A1)-1));2)
diese Formel in die erste Zelle und dann nach unten und rechts ziehen, soweit wie benötigt.
Gruß Daniel

Anzeige
OT (365): office-hilfe.com/support/threads/54598
03.03.2021 13:40:55
lupo1
https://www.office-hilfe.com/support/threads/liste-der-permutationen-ohne-vba.54598/ listet die Permutationen eines Strings mit oder ohne Wdh.
Hinweis: Der String wird dabei als Zahl eingegeben, damit man erst mal nur die Struktur erhält. Mit =TEIL() kann man den einzelnen Ziffern dann Buchstaben, Zahlen oder Wörter zuweisen, falls benötigt.
Der obere Teil des Tutorials lässt sich auch auf ältere Excels umsetzen.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige