4 höchsten Werte suchen

Hallo VBA-Freunde,
bin nach langer Zeit mal wieder im Forum.
Folgende Lösung wird gesucht.
Im Range „H4:J24“ werden die erzielten Ergebnisse der Sportler eingetragen.
Der Sportler mit dem höheren Ergebniss wird automatisch „Gelb“ hinterlegt. (Bedingte Formatierung). Die niedriegeren Ergebnisse bleiben in „Blau“(ColorIndex= 24).
Aus allen „Blauen“ Zellen sollen nun die 4 höchsten Ergebnisse ausgewählt werden und Grün (ColorIndex=4) hinterlegt werden. Diese
Prozedur brauch nur einmal ausgelöst werden wenn alle Ergebnisse eingetragen sind. Testmappe gepostet.
Wer weiss hier eine Lösung?
Mit bestem Dank im voraus.
Gruß Skaletti!
http://www.hostarea.de/server-12/Dezember-b19b9bcc39…

Hallo Skaletti,

bin nach langer Zeit mal wieder im Forum.

deine Wiederkehr war jemanden immerhin ein Stern wert :smile:

Der Sportler mit dem höheren Ergebniss wird automatisch „Gelb“
hinterlegt. (Bedingte Formatierung). Die niedriegeren
Ergebnisse bleiben in „Blau“(ColorIndex= 24).
Aus allen „Blauen“ Zellen sollen nun die 4 höchsten Ergebnisse
ausgewählt werden und Grün (ColorIndex=4) hinterlegt werden.
Diese
Prozedur brauch nur einmal ausgelöst werden wenn alle
Ergebnisse eingetragen sind. Testmappe gepostet.
http://www.hostarea.de/server-12/Dezember-b19b9bcc39…

entferne da deine bed. Formatierungen aus H und J.

ins Modul von Tabelle1:

Private Sub Worksheet_Change(ByVal Target As Range)
Set Target = Intersect(Target, Range(„H4:H24,J4:J24“))
If Not Target Is Nothing Then Call Faerben(Target)
End Sub

in ein Standardmodul, z.B. Modul1:

Sub Faerben(ByVal Target As Range)
Dim Zelle As Range, arrMax(3), M As Byte, Anz As Byte
On Error GoTo Fehler
Application.EnableEvents = False
For Each Zelle In Target
 If Cells(Zelle.Row, 8) = "" Or Cells(Zelle.Row, 10) = "" Then
 Cells(Zelle.Row, 8).Interior.ColorIndex = 24
 Cells(Zelle.Row, 10).Interior.ColorIndex = 24
 ElseIf Cells(Zelle.Row, 8) \> Cells(Zelle.Row, 10) Then
 Cells(Zelle.Row, 8).Interior.ColorIndex = 6
 Cells(Zelle.Row, 10).Interior.ColorIndex = 24
 ElseIf Cells(Zelle.Row, 8) 4 Then Exit For
 arrMax(M) = Application.Large(Range("O4:Q24"), M + 1)
 Anz = Anz + Application.CountIf(Range("O4:Q24"), arrMax(M))
 For Each Zelle In Range("H4:H24,J4:J24")
 If Zelle.Value = arrMax(M) And Zelle.Interior.ColorIndex = 24 Then Zelle.Interior.ColorIndex = 4
 Next Zelle
 Next M
 Range("O4:Q24").ClearContents
 Application.EnableEvents = True
Else
 For Each Zelle In Range("H4:H24,J4:J24")
 If Zelle.Interior.ColorIndex = 4 Then Call Faerben(Zelle)
 Next Zelle
End If
Fehler:
Application.EnableEvents = True
End Sub

Gruß Reinhard

Hallo Reinhard,
funzt wie immer alles Bestens.
Vielen Dank für die schnelle und perfekte Hilfe.
Danke für den Stern

Gruß Skaletti!

funzt wie immer alles Bestens.
Vielen Dank für die schnelle und perfekte Hilfe.
Danke für den Stern

Hallo Skaletti,

nö, der Stern war nicht von mir.
Ich fand#s nur erstaunlich daß hier schon Fragen besternt werden :smile:)
Passiert in w-w-w gar nicht so selten, ich rätsel dann immer, warum.
Sinn würd’s für mich nur machen wenn da quasi endlich mal eine Frage auf den Tisch kommt die mal nötig war oder so.

Was ich zwar im Code reingeschrieben habe aber nicht extra nachgefragt habe, was soll geschehen wenn zwei die gleiche Ringanzahl haben?

Gruß
Reinhard

Hallo Reinhard,

Mit dem Stern für mich sollte ein Scherz sein.

Was ich zwar im Code reingeschrieben habe aber nicht extra
nachgefragt habe, was soll geschehen wenn zwei die gleiche
Ringanzahl haben?

Berechtigte Frage. Wird vorher in einem Stechen endschieden, und
der Verlierer wird dann auf „Null“ gesetzt,so das es immer bei
4 beste Verlierer bleibt, und das Makro immer so funktioniert.
Ist in der Testmappe nicht zu erkennen.

Gruß
Skaletti!

Berechtigte Frage. Wird vorher in einem Stechen endschieden,
und
der Verlierer wird dann auf „Null“ gesetzt,so das es immer bei
4 beste Verlierer bleibt, und das Makro immer so funktioniert.
Ist in der Testmappe nicht zu erkennen.

hallo Skaletti,

halte ich für unfair. Jmd hat mit einem anderen im Duell je 99 Punkte. Dann stechen sie und er unterliegt mit 98 zu 99. Dann kriegt er Null Punkte, kommt also nicht in den bereich viertbester Verlierer, obwohl er viel mehr Punkte holte als andere Verlierer.

Und, wie auch so im Code gemanagt, nur in Ausnahmefällen gibt es genau 4 „Grüne“.
Und zwar nur dann wenn es genau einen gäbe der 96 Punkte hätte, nur einen der 95 Punkte hätte usw.

Im Normalfall gibt es es eher daß die besten zwei Verlierer 96 Punkkte haben, die nächstbesten 5 94 Punkte. Insofern gibt es dann 7 „Grüne“

Gruß
Reinhard

Hallo Reinhard,

halte ich für unfair. Jmd hat mit einem anderen im Duell je 99
Punkte. Dann stechen sie und er unterliegt mit 98 zu 99. Dann
kriegt er Null Punkte, kommt also nicht in den bereich
viertbester Verlierer, obwohl er viel mehr Punkte holte als
andere Verlierer.

Auch hier hast du Recht. Wenn wird nur um den 4. Platz gestochen.
Die Ringhöheren kommen so weiter. Die Erfahrung sagt, das man mit
einem Ergebnis von 99,98,97 zu den Siegern gehört. Es kommt fast
immer mit den 4 besten Verlierern hin. Ist eine Vereinsinterne
Veranstaltung, die nicht ganz so ernst genommen wird. Gegner und
Sportgeräte werden ausgelost usw.

Im Normalfall gibt es es eher daß die besten zwei Verlierer 96
Punkkte haben, die nächstbesten 5 94 Punkte. Insofern gibt es
dann 7 „Grüne“

richtig!
In diesem Fall würden die mit 94 um den 3. und 4. Platz Stechen.
Die Erfahrung bei dieser Veranstaltung sagt, dass es
fast immer 4 95 oder 94 Ergebnisse gibt.

Danke für deine Hinweise und Anmerkungen.

Gruß Skaletti!