Thema Datum  Von Nutzer Rating
Antwort
Rot Abbildung der Reihenfolge
05.03.2012 09:59:19 Bo2k
NotSolved
08.03.2012 05:04:13 Till
NotSolved
07.03.2013 00:09:57 Gast94339
NotSolved

Ansicht des Beitrags:
Von:
Bo2k
Datum:
05.03.2012 09:59:19
Views:
1750
Rating: Antwort:
  Ja
Thema:
Abbildung der Reihenfolge

 Hallo zusammen,

ich habe folgendes Problem: Ich habe mit Hilfe von VBA ein Makro für Excel erstellt, welches zunächst in den Spalten 1 bis 4 mit den Zahlen 1 bis 4 alle Permutationen abbildet. D.h. das Makro generiert alle möglichen Kombinationen, welche sich aus diesen 4 Ziffern bilden lassen, ohne Wiederholungen zu zu lassen.
Exemplarisch sieht das dann so aus:

1 2 3 4
1 2 4 3
1 4 2 3
1 4 3 2
...

So gehts weiter bis die 24 Möglichkeiten abgebildet sind. Dies funktioniert auch so weit ganz gut.

Mein Ziel ist es nun die Reihenfolge der Zahlen in den Spalten 6 bis 9 abzubilden. Dies habe ich versucht über die Position der Zahlen auszudrücken. Wenn man davon ausgeht, dass die Gundreihenfolge 1 2 3 4 ist, so ist bei der ersten Möglichkeit die Reihenfolge ebenfalls 1 2 3 4. D.h. die 1 ist an der 1. Position, die 2 and der 2. Position usw...
Für die Permutation 4 3 1 2 wäre die Reihenfolge / Position dann zum Beispiel 3 4 2 1. Nochmal kurz zum Verständnis: die 1 an 3. Position, die 2 an 4. Position, die 3 an 2. Position und die 4 an 1. Position.

Ich habe bereits eine Möglichkeit gefunden diese Positionsbestimmung durchzuführen - das Problem ist jedoch, dass die Methode relativ langsam ist, da sie so lange Schleifen durchläuft bis für jede einzelne Spalte pro Zeile die Reihenfolge abgebildet ist.

        	'Reihenfolge bilden
	
        	Dim Rang As Long
        	Dim Position As Long
	
        	Position = 6 '1. Spalte der Reihenfolgetabelle
	
        	Do While Position < 10 'Nummer ist eins höher als letzte Spalte der Reihenfolgetabelle
	
        	Rang = Application.Match((Cells(1, Position)), Range((Cells(Zeile, 1)), (Cells(Zeile, 4))), 0) 'Range für Permutationstabelle
        	Cells(Zeile, Position) = Rang
	
        	Position = Position + 1
	
        	Loop

 

Anmerkung: Die Grundreihenfolge steht in der 1. Zeile der Reihenfolgetabelle (Spalte 6 bis 9). Application.Match nutzt diese Grundreihenfolge, um einen Abgleich mit den ersten 4 Spalten zu machen.

Jetzt könnte man natürlichen sagen, dass das nicht allzu lange dauert für 24 Möglichkeiten. Mein Ziel ist jedoch diese Permutationstabelle zu vergrößern. Bei 10 Ziffern handelt es sich schon um 3,6 Mio Möglichkeiten und da bremst diese Reihenfolge-Schleife ziemlich. Und sie soll eigentlich noch größer werden.


Hat irgendjemand eine Idee wie sich die Reihenfolge-/Positionsbestimmung schneller durchführen lässt? Vielleicht in einem einzigen Schritt pro Zeile?


Falls etwas nicht verstanden wurde weil ich es zu kompliziert oder nicht ausreichend erklärt habe bin ich auch gerne bereit mein Thema noch weiter zu erläutern.

Vielen Dank im Voraus!
Bo2k


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:

 
 

  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot Abbildung der Reihenfolge
05.03.2012 09:59:19 Bo2k
NotSolved
08.03.2012 05:04:13 Till
NotSolved
07.03.2013 00:09:57 Gast94339
NotSolved