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

Automatische Vergabe einer Platzierung

Automatische Vergabe einer Platzierung
14.10.2021 15:49:44
Stephan
Guten Tag Zusammen,
ich erstelle gerade eine Auswertungstabelle für eine Veranstaltung, bei der Teilnehmer auf Zeit einen Parcours absolvieren. Am Ende aller Eingaben sortiere ich die Liste mit einem Makro so, dass die längste Zeit oben, und die kürzeste unten steht. Soweit funktioniert alles.
Jetzt zu meiner Frage:
Gibt es eine Möglichkeit eine Spalte (in meinem Fall AD) automatisch mit der aus den Ergebnissen resultierenden Platzierung zu füllen?
Beispiel: 5 Einträge mit Zeiten in Spalte AC:
8 Min, 7 Min, 6 Min, 5 Min, 4 Min. - daraus folgt die Platzierung:
5 4 3 2 1
Die Herausforderung besteht weiterhin darin, dass ich die Anzahl der Teilnehmer noch nicht kenne und daher das Makro alle einen Bereich umfasst bei dem am Ende auch Null-Werte (0 Minuten) stehen und diese Werte müssten ignoriert werden.
Ich hoffe, meine Erläuterung ist nachvollziehbar und es gibt ein paar Ideen zur Umsetzung.
Vielen Dank im Voraus,
Stephan

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: nachgefragt ...
14.10.2021 15:58:40
neopa
Hallo Stephan,
... wozu dafür VBA? Nutze dafür doch die Funktion RANG() als reine Formellösung (auch für unsortierte Daten und zwar in einer "formatiertenTabelle") oder auch in VBA.
Gruß Werner
.. , - ...
AW: nachgefragt ...
14.10.2021 17:35:45
Stephan
Danke für den Hinweis mit der Funktion Rang.
Hintergrund warum VAB bzw. Makros ist, dass die Sortierung mittels eine Click-Events mit einem ActiveX-Button ausgelöst wird.
Es wäre halt eine elegante Lösung, wenn hier dann auch gleich die Spalte mit den Platzierungen ausgefüllt würde.
Außerdem weiß ich nicht, ob ich mit (Rang) auch die Zeiten die im Format Minute-Sekunden-Zehntel (02:34,567) abgebildet sind, überhaupt auswerten kann...
Mein Makro sieht wie folgt aus:
Sub K8_PlatzierungSortieren_L1()
'
' PlatzierungSortieren Makro
'
ActiveSheet.Unprotect
Range("C2:AC19").Select
ActiveWorkbook.Worksheets("Youngster-K8-L1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Youngster-K8-L1").Sort.SortFields.Add2 Key:=Range( _
"AC3:AC19"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("Youngster-K8-L1").Sort
.SetRange Range("C2:AC19")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
ActiveSheet.Protect
End Sub Ausgeführt wird das Ganze wie folgt:

Private Sub K8_Platzierung_L1_Click()
ActiveSheet.Unprotect
Columns("AD").EntireColumn.Hidden = False
K8_PlatzierungSortieren_L1
ActiveSheet.Protect
End Sub
Ich finde leider keine Option hier ein Bild einzufügen. Sonst wäre wahrscheinlich besser ersichtlich worauf ich hinaus will...
Anzeige
AW: VBA-Lösung gesucht, thread offen owT
14.10.2021 18:27:00
neopa
Gruß Werner
.. , - ...
AW: Automatische Vergabe einer Platzierung
15.10.2021 09:25:42
Stephan
Hallo Zusammen,
für den Fall, dass Jemand vor der gleichen Herausforderung steht, hier die Lösung, die ich umgesetzt habe:
Ich habe die Zellen der Spalte AD, welche die Platzierungen enthalten soll, mit der Formel =RANG.GLEICH bestückt und damit baue ich die Rangliste auf.
Folgende Formel habe ich genutzt:

=RANG.GLEICH(AC3;$AC$3:$AC$18;1)
Diese Formel setzt die Zelle A3 ins Verhältnis zum Bereich AC3 bis AC18. Die 1 am Ende steht dafür, dass die Liste von groß nach klein sortiert werden soll.
Für alle weiteren Zellen in dem Bereich muss die Formel dann so angepasst werden, dass sie sich auf die jeweils gültige/nächste Zelle beziehen.
Bedeutet in AC4 steht dann AC4;AC3:AC18, in AC5 dann AC5;AC3:AC18, usw.
Da ich meine Liste zuerst (!) mit einem Makro so sortieren, dass die langsamste Zeit oben (hier = AC3) steht, erreiche ich so mein Ziel, dass ich Platzierung somit abbilden kann.

Anzeige
VBA zur Vervollständigung
15.10.2021 09:48:08
Pierre
Hallo Stephan,
als VBA-Lösung z. B. so:
Füge folgende Codezeilen direkt unter "Sub K8..." ein:

Dim Letzte As Integer
Letzte = ActiveSheet.Cells(Rows.Count, 29).End(xlUp).Row
Range("AC3").Select
ActiveCell.FormulaR1C1 = "=RANK(RC[-1],R3C29:R11C29,0)"
Range("AC3").Select
Selection.AutoFill Destination:=Range("AC3", "AC" & Letzte), Type:=xlFillDefault
Range("AC3", "AC" & Letzte).Select
Gruß Pierre

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige