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
Bei mir seht nirgendwo Tabelle 1
wie muss ich den Code jetzt ändern
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