Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1436to1440
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Excel VBA Rangplatzierung sortieren

Excel VBA Rangplatzierung sortieren
29.07.2015 23:18:25
Peter
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

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel VBA Rangplatzierung sortieren
30.07.2015 06:01:58
fcs
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

Anzeige
AW: Excel VBA Rangplatzierung sortieren
31.07.2015 19:20:41
Peter
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
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige