Re(2): Beispielmappe
Geizhals » Forum » Programmierung » Excel - Highscore dynamisch (mit VBA) erstellen !? (15 Beiträge, 311 Mal gelesen) Top-100 | Fresh-100
Du bist nicht angemeldet. [ Login/Registrieren ]
.  Beispielmappe  (Sirius am 27.03.2013, 23:02:53)
..  Re: Beispielmappe  (Thunder am 28.03.2013, 09:05:48)
...  Re(2): Beispielmappe  (Sirius am 28.03.2013, 09:11:45)
....  Re(3): Beispielmappe  (Thunder am 28.03.2013, 09:24:06)
...  Re(2): Beispielmappe  (SunnyHill am 28.03.2013, 16:33:06)
....  Re(3): Beispielmappe  (Thunder am 29.03.2013, 08:21:39)
.....  Re(4): Beispielmappe  (SunnyHill am 30.03.2013, 20:47:48)
......  Re(5): Beispielmappe  (Thunder am 31.03.2013, 14:09:00)
...
Re(2): Beispielmappe
28.03.2013, 16:33:06
Sooorrry für die späte Antwort und weiters vielen Danke für deine Mithilfe!

Den Befehl "transpose" kannte ich noch nicht.....

Habe meinen Code in VBA nun etwas in Anlehnung deines Codes angepasst,  und hat sich nun ein neues Problem aufgetan....

Grund:
Von mir wird eine "Schießturnier-Tabelle" benötigt, wo bis zu 200 Schützen (B2:B202) eingetragen werden.
Pro Zeile befindet sich zwischen E:K die "Highscore-List" mit den 7 höchsten Schießergebnissen aus einer jeweiligen 5er-Schussserie (L: P).
Aus dieser 5er-Serie wird die  Gesamtsumme berechnet, und folgend mit deinem Code entsprechend gereiht, und wieder aktualisiert nach E:K eingetragen.
Jeder Schütze kann - muss aber nicht - nur eine 5er Serie schießen; mehr Serien sind natürlich immer möglich.

Mein jetztige Code:


Option Explicit
Dim i, letzteReihe As Integer

Dim SWertung, SDummy As Range

Const ersteSpalte As Integer = 5 'derzeit höchste Wertung nach 5er-Serie
Const letzteSpalte As Integer = 11 'derzeit niedrigste Wertung nach 5-Serie

Private Sub Worksheet_Change(ByVal Target As Range)

If Intersect(Target, Range("P2:P200")) Is Nothing Then Exit Sub

letzteReihe = ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Row

If letzteReihe < 2 Then Exit Sub


For i = 2 To letzteReihe

 Set SWertung = Range(Cells(i, ersteSpalte), Cells(i, letzteSpalte)) 'Schießergebnisse des Schützen nach 5er-Serien
 Set SDummy = Range("Z2:Z9") 'Sortierspalte

 Range("Z2:Z8").Value = Application.Transpose(SWertung)
 Range("Z9").Value = Application.Sum(Range(Cells(i, 12), Cells(i, 16))) 'Summe der 5er-Schussserie in Sortierspalte eintragen
 
 ActiveWorkbook.Worksheets("Tabelle1").Sort.SortFields.Clear
 ActiveWorkbook.Worksheets("Tabelle1").Sort.SortFields.Add Key:=SDummy _
        , SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Tabelle1").Sort
        .SetRange SDummy
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
 
 SWertung.Value = Application.Transpose(Range("Z2:Z8").Value)

Next i

....


Das Problem bei meinem Code ist aber nun, dass die Highscore-Eintragungen pro Schützen nicht mehr stimmen, da bei jeder neuen Eingabe einer neuen 5er-Serie bei einem Schützen die Highscoreliste erneut mit dem niedrigsten Wert hinzugefügt wird.

Ich hoffe, die %-) ist nun nicht völlig ausgebrochen!!



   Alles stimmt. Aber auch das Gegenteil.

[ Dieser Beitrag wurde inzwischen editiert. Die aktuelle Version befindet sich hier. ]
Antworten PM Alle Chronologisch Zum Vorgänger
 
Melden nicht möglich
 

Dieses Forum ist eine frei zugängliche Diskussionsplattform.
Der Betreiber übernimmt keine Verantwortung für den Inhalt der Beiträge und behält sich das Recht vor, Beiträge mit rechtswidrigem oder anstößigem Inhalt zu löschen.
Datenschutzerklärung