Clever-Excel-Forum

Normale Version: Tabelle per Makro sortieren
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2 3
Er zeigt mir Debuggen an :

lz1=.Range("A2").End(xlDown).Row

In der Hauptexcel befinden sich die Namen und Punkte unter B2 bez. C2

Das hatte ich in deiner Formel auch geändert.

[size=1]End Sub


End Sub
[/size]
So ich hab jetzt mal soweit alles reduziert das ich es Schicken kann.

Es dreht sich wie gesagt um das Blatt Rechnen und die Jahrstabelle.

Lg
Hallöchen,

der Gast hat ja schon in seinem Nachtrag auf das Problem mit den Tabellennamen hingewiesen.
Im Code steht nun

With Tabelle1 'Sheets("Jahrestabelle")

Wenn Du im VBA-Editor bist, siehst Du im Projektexplorer für jedes Blatt 2 Namen, in etwa so

bei einer neuen Datei:
Tabelle1 (Tabelle1)

bei geändertem Blattname z.B.:
Tabelle1 (Jahrestabelle)

Du müsstest nun im PE schauen, ob vor dem gewünschten Blatt auch Tabelle1 steht, wenn nicht, den Code entsprechend ändern ... Tabelle1 gibt es in der aktiven Mappe anscheinend nicht.

... hab gerade gesehen, dass Du, während ich geschrieben habe, eine Antwort gepostet hast. wie ich schon schrieb, Tabelle1 gibt es nicht Sad
Bei mir seht nirgendwo Tabelle 1 

wie muss ich den Code jetzt ändern Sad stehe auf dem schlauch

ok er führt nun den Makro aus 

allerdings passiert hier das gleiche alle leeren bez. 0 zeilen stehen oben

Ich werde noch verrückt mit der Tabelle.

Wie gesagt alle anderen Tabellen funktionieren auch wunderbar nur die Jahrestabelle mit den Kommazahlen eben nicht.
Hallöchen,

wenn die Nullen vor dem Sortieren oben stehen bleiben sie auch dort.
Unterdrücke die Nullen, z.B. mit =WECHSELN(Rechnen!M60;0;"").
Hi,

die Datei ist wirklich ein schönes Beispiel dafür, wie man etwas optisch "schönes" machen will und dabei jeglichen Grundsatz einer vernünftigen Datenhaltung und Aufbereitung über den Haufen wirft. Gefühlt hunderte feste Verknüpfungen auf andere Zellen im Stile von =Blatt1!C26 - so dass man am Ende nicht mehr weiß, wie was zusammenhängt. Dass da Ende keiner druchblickt muss nicht verwundern.

Was kannst du tun? z.B. endlich meinen Rat befolgen und bei allen Formeln im Stile von =WENN(A1="";"";B1/C1) durch =WENN(A1="";0;B1/C1) oder sogar =WENN(A1="";;B1/C1) ersetzen. Zumindest in den Spalten, die sortiert werden sollen. In deinem konkreten Fall also in Rechnen!L3 statt =WENN(I3=0;"";J3/K3) solltest du =WENN(I3=0;0;J3/K3) oder sogar =WENN(I3=0;;J3/K3) verwenden - und die Formel runter ziehen.
Wenn du dich mit VBA offenkundig so schlecht auskennst, solltest du darauf verzichten und SORTIEREN & Co. verwenden. Dazu verwendest du in Jahrestabelle folgende Formeln:
A2: =RANG.GLEICH(C2:C41;C2:C41)
B2: =SORTIERENNACH(Rechnen!I3:I42;Rechnen!L3:L42;-1;Rechnen!I3:I42;1)
C2: =SORTIEREN(Rechnen!L3:L42;1;-1)

Noch eine Möglichkeit: Lass die Formeln im Blatt Rechnen und verwende in Jahrestabelle folgende Formeln:
A2: =RANG.GLEICH(C2:C41;C2:C41)
B2: =SORTIERENNACH(Rechnen!I3:I42;1/Rechnen!L3:L42;1;Rechnen!I3:I42;1)
C2: =SORTIERENNACH(Rechnen!L3:L42;1/Rechnen!L3:L42;1)
Wieso das funktioniert? Weil du nun aufsteigend nach den Kehrwerten sortierst.
Hallo

ich habe mir das Makro noch mal angeschaut, falls die Nullen mitten in der Liste auftauchen sollten.
Die koirrigierte Version sortiert jetzt einwandfrei, weil ich zuerst alle Nullwerte ans Listenende stelle.

mfg Gast 123

Code:
Sub Tabelle_Jahr1()
Dim j As Long, lz1 As Long
Application.ScreenUpdating = False
With Tabelle1 'Sheets("Jahrestabelle")
    lz1 = .Range("A2").End(xlDown).Row
    'Alle Nullen ans Listenende stellen
    .Range("A2:E" & lz1).Sort Key1:=.Range("A2"), Order1:=xlDescending, Header:=xlNo, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
    '1. Null in der Tabelle suchen
    For j = 2 To lz1
        If .Cells(j, 1) = "" Or .Cells(j, 1) = 0 Then Exit For
    Next j
    'Sortierbereich ohne Null Zeilen sortieren
    .Range("A2:E" & j - 1).Sort Key1:=.Range("B2"), Order1:=xlDescending, Key2:=.Range("A2"), Order2:=xlDescending, Header:=xlNo, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
End With
End Sub
Seiten: 1 2 3