Excel VBA Rangplatzierung sortieren

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
UserForm MsgBox
Bild

Betrifft: Excel VBA Rangplatzierung sortieren
von: Peter
Geschrieben am: 29.07.2015 23:18:25

Hallo Leute
Ich bin gerade dabei mittels Userformen eine Fußballtabelle zu erstellen.
Nun habe ich folgendes Problem. In dem Tabellenblat "Statistik" werden alle Statistiken zu den Vereinen gespeichert. In Spalte A stehen die Vereinsnamen - Spalte B stehen die geschossenen Tore - Spalte C stehen die erhaltenen Tore - Spalte D steht die Tordiferenz - Spalte E stehen die PKT
Team--e.Tor--g.Tor--diTor--PKT
FC Team1 -- 6--4--3--8
FC Team2 --5--4--3--8
FC Team3 --2--5--3--9
FC Team4 --6--4--3--7
FC Team5 --6--4--2--8
Wie kann ich über VBA die Tabelle bzw. die Teams so sortieren, dass zuerst die Pkt berücksichtigt werden, danach die Tordiffernez und danach die geschossenen Tore.
Wenn die Spalten auf dem Tabellenblatt richtig sortiert wurden, kann ich die Rangplatzierung mittels schleife durchschreiben lassen und in die Fertige Userform einlesen. Der Anwender kann und soll nur mit Userformen arbeiten, daher mus ich das unbedingt über VBA lösen. Die Tabelle wird beim öffnen immer neu erstellt.
Ich würde mich über eine Antwort freuen
LG Jumbo125

Bild

Betrifft: AW: Excel VBA Rangplatzierung sortieren
von: fcs
Geschrieben am: 30.07.2015 06:01:58
Hallo Jumbo.
nachfolgend ein Makro+Sub-Routine mit entsprechender Sortierfunktion.
Gruß
Franz

Sub SortFootballtable()
    Dim wks As Worksheet
    
    Set wks = Activeworkbook.Worksheets("Statistik")
    
    With wks
        'Zelle A5 ist in diesem Beispiel die Zelle in der der 1. Team-Name steht
        Call prcSortSportsTable(Bereich:=.Range(.Range("A5"), .Range("A5").End(xlDown).Offset(0, _
 4)), _
                lngHeader:=xlNo)
    End With
End Sub
Sub prcSortSportsTable(Bereich As Range, Optional lngHeader As Long = xlGuess)
    'Sortiert Zellbereich mit 5 Spalten nach Punkten, Tordifferenz, geschossene Tore
    'Team        e.Tor g.Tor diTor PKT
    'FC Team1    6     4     2     8
    'FC Team4    5     4     1     7
    'usw.
    With Bereich
        'Prüfen ob zu sortierender Bereich mindestens 2 Zeilen enthält
        If Bereich.Rows.Count > 1 + IIf(lngHeader = xlYes, 1, 0) Then
            Bereich.Sort key1:=.Cells(1, 5), Order1:=xlDescending, _
                Key2:=.Cells(1, 4), Order2:=xlDescending, _
                key3:=.Cells(1, 2), Order3:=xlDescending, Header:=lngHeader
        End If
    End With
End Sub


Bild

Betrifft: AW: Excel VBA Rangplatzierung sortieren
von: Peter
Geschrieben am: 31.07.2015 19:20:41
Supper
So einfach und doch so effektiv. Schade das ich nicht selber darauf gekommen bin. VIELEN DANK
Ich wusste nicht das man mehrere Keys definieren kann. Hab das gleich ausprobiert und funktionierte auf anhieb

Sub sort_statistic()
    Dim wks As Worksheet
    Dim i As Integer
    Dim str1 As String
    Dim tmp1 As Integer: tmp1 = 3
    
    Set wks = ActiveWorkbook.Worksheets("Statistik")
    
    For i = 1 To Sheets("Configurations").Cells(8, 2).Value
    
        str1 = Cells(tmp1, 1).Address
        MsgBox str1
        With wks
            'Zelle A3 ist in diesem Beispiel die Zelle in der der 1. Team-Name steht
            Call prcSortSportsTable(Bereich:=.Range(.Range(str1), .Range(str1).End(xlDown). _
Offset(0, 4)), lngHeader:=xlNo)
        End With
        tmp1 = (Sheets("Configurations").Cells(10, 2).Value * i) + ((i + 1) * 2) + 1
    Next
    
End Sub

Sub prcSortSportsTable(Bereich As Range, Optional lngHeader As Long = xlGuess)
    'Sortiert Zellbereich mit 5 Spalten nach Punkten, Tordifferenz, geschossene Tore
    With Bereich
        'Prüfen ob zu sortierender Bereich mindestens 2 Zeilen enthält
        If Bereich.Rows.Count > 1 + IIf(lngHeader = xlYes, 1, 0) Then
            Bereich.Sort key1:=.Cells(1, 5), Order1:=xlDescending, _
                Key2:=.Cells(1, 4), Order2:=xlDescending, _
                key3:=.Cells(1, 2), Order3:=xlDescending, Header:=lngHeader
        End If
    End With
End Sub
VIELEN DANK

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Excel VBA Rangplatzierung sortieren"