20.09.2022, 12:19 (Dieser Beitrag wurde zuletzt bearbeitet: 20.09.2022, 12:22 von schauan.)
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
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
20.09.2022, 13:12 (Dieser Beitrag wurde zuletzt bearbeitet: 20.09.2022, 13:15 von HKindler.)
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.
Gruß, Helmut
Win10 - Office365 / MacOS - Office365
Folgende(r) 1 Nutzer sagt Danke an HKindler für diesen Beitrag:1 Nutzer sagt Danke an HKindler für diesen Beitrag 28 • shift-del
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