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

Ausgabe/Sortierung VBA-Array

Ausgabe/Sortierung VBA-Array
28.01.2021 09:07:46
Hector
Hallo zusammen,
konte schon einiges an Informationen / Hilfen aus diesem Forum sammeln, habe jetzt aber ein Problem an dem ich verzweifle.
Für ein Kartenspiel, das wir (außerhalb der Pandemie) regelmäßig spielen mache ich eine Excel-Liste mit VBA, welche die jeweiligen Ergebnisse dokumentiert.
Für die Ermittlung der Rangfolge (1ter Platz, 2ter Platz, usw) habe ich ein (eindimensionales) Array aus dem ich die Plätze sortieren möchte.
Folgende Bedingungen sind sichergestellt.
1) max 6 Spieler / Ergebnisse (im Array 1-6). Es können ggfs. aber auch weniger Spieler sein, dann sind die jeweiligen letzten Einträge im Array = ""
2) das Array ist bereits absteigend sortiert, RangfolgeArray(1) ist der höchste Wert
Mein Problem ist nun, dass die Spieler auch identische Ergebnisse haben können und somit dann den gleichen Platz belegen sollen, genau dieses möchte ich dann ausgeben
Beispiel
Spieler_4 30
Spieler_1 20
Spieler_2 20
Spieler_3 20
Spieler_6 10
Spieler_5 -10
Das Ergebniss sollte dann etwa so aussehen
Platz1 - Spieler_4
Platz2 - Spieler_1
Platz2 - Spieler_2
Platz2 - Spieler_3
Platz2 - Spieler_6
Platz3 - Spieler_5
Ich habe folgende For-Schleife(n) hänge aber total an den Ausgaben, da mir die Ergebnisse immer doppelt oder auch falsch ausgegeben werden.
Dim i As Integer, j As Integer
Dim P
For i = 1 To 6
For j = i + 1 To 6
If RangfolgeArray(i) > RangfolgeArray(j) Then
P = "Platz" & (i)
Debug.Print P & " Durchlauf(i): " & (i)
Debug.Print P & " Durchlauf(j): " & (j)
'Exit For
ElseIf RangfolgeArray(i) = RangfolgeArray(j) Then
P = "Platz" & (i)
Else
P = "Platz" & (j)
End If
Next j
Next i
Hat jemand ein Idee, wie ich die Schleife umbauen muss, oder wo ich die Ausgaben einbauen muss, dass ich ausschliesslich jeden Platz einmal erhalte?
Vielen Dank im Voraus und Viele Grüße
Hector

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Ausgabe/Sortierung VBA-Array
29.01.2021 08:30:17
Hector
Hallo Tino,
Dein link war mir bereits bekannt, habe darin aber nicht meine gewünschte Lösung erkannt.
Trotzdem Vielen Dank dafür!
Ich habe jetzt aus dem eindimensionalen Array ein zweidimensionales Array gemacht und dann war die Lösung einfach relativ einfach.
For i = 1 To 5
j = i + 1
If RangfolgeArray(i, 0) = RangfolgeArray(j, 0) Then
RangfolgeArray(j, 1) = RangfolgeArray(i, 1)
Else
RangfolgeArray(j, 1) = (RangfolgeArray(i, 1) + 1)
End If
Next i
Danke nochmal und Viele Grüße
Hector
Anzeige
AW: Ausgabe/Sortierung VBA-Array
28.01.2021 16:50:25
Daniel
Hi
muss das im Array sein?
du kannst auch so vorgehen:
1. Spielernamen und Punkte in die Extabelle schreiben
2. Den Zellbereich mit der Excelfunktion nach Punkten sortieren
3. die Platzierung machst du per feststehender Formel in einer nachbarspalte, die nicht mit sortiert wird nach diesem Schema:
1. Zelle: fixer wert 1
ab der zweiten Zelle eine Formel nach dem Schema: wenn Punkte in zeile drüber = Punkte in geleicher Zeile, dann Platzierung aus Zeile drüber übernehmen, ansonsten Platzierung Zeile drüber + 1
damit die Zellbezüge beim Sortieren nicht durcheinander geraten, machst du sie über INDEX(X:X;Zeile()) (gleiche Zeile) bzw INDEX(X:X;Zeile()-1) (Zeile drüber).
Sortieren in VBA ist kompliziert zu programmieren, das macht man einfacher in der Exceltabelle.
Gruß Daniel
Anzeige
AW: Ausgabe/Sortierung VBA-Array
29.01.2021 08:32:02
Hector
Hallo Daniel,
Danke für Deinen Beitrag!
Habe es nun doch "relativ" einfach in einem zweidimensionale Array gelöst :-)
Danke nochmal und Viele Grüße
Hector

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige