Makro - Eine Spalte sortieren, aber nur wenn andere Spalte nicht "Null" enthält
#1
Guten Morgen,

ich habe folgendes Makro vorliegen, mit dem Spalte I absteigend sortiert wird:

Sub Sort()

    Range("A3:W287").Sort Key1:=Range("I3"), Order1:=xlDescending, _
    Header:= _
        xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal

End Sub

Allerdings sind in Spalte H Werte eingetragen, und wenn diese Spalte H gleich Null ist, dann soll diese Zeile nicht in der Sortierung berücksichtigt werden, oder zumindest nicht oben erscheinen, auch wenn in diesem Fall in Spalte I der höchste Wert steht.


Falls das zu umständlich ausgedrückt ist, ich habe zwei Screenhots beigefügt, einmal mit dem Sortierergebnis mit angegebenem Makro und einmal so, wie es sein soll.

Für Hilfe bin ich dankbar.
   

   
Top
#2
Hi,

ich würde an deiner Stelle eine Hilfsspalte anlegen (die einfach ausgeblendet wird), in der Nullwerte oder Texte mit einem "x" gekennzeichnet werden. Danach sortierst du in der Reihenfolge Spalte J A-Z und Spalte I Werte aufsteigend.

Anbei ein Tabellenausschnitt, wie ich mir das vorstelle und ein dazugehöriges aufgezeichnetes Makro.

Tabelle3

HIJ
1Vor der SortierungSpalte ausblenden
21001.05.2015
32005.01.2015
410017.06.2015
51506.02.2015
68031.08.2015
7-13.05.2015x
81122.12.2015
9818.11.2015
10017.07.2015x
11
12Sortiert
131122.12.2015
14818.11.2015
158031.08.2015
1610017.06.2015
171001.05.2015
181506.02.2015
192005.01.2015
20017.07.2015x
21-13.05.2015x
Formeln der Tabelle
ZelleFormel
J2=WENN(ODER(H2<1;ISTTEXT(H2));"x";"")
J3=WENN(ODER(H3<1;ISTTEXT(H3));"x";"")
J4=WENN(ODER(H4<1;ISTTEXT(H4));"x";"")
J5=WENN(ODER(H5<1;ISTTEXT(H5));"x";"")
J6=WENN(ODER(H6<1;ISTTEXT(H6));"x";"")
J7=WENN(ODER(H7<1;ISTTEXT(H7));"x";"")
J8=WENN(ODER(H8<1;ISTTEXT(H8));"x";"")
J9=WENN(ODER(H9<1;ISTTEXT(H9));"x";"")
J10=WENN(ODER(H10<1;ISTTEXT(H10));"x";"")
J13=WENN(ODER(H13<1;ISTTEXT(H13));"x";"")
J14=WENN(ODER(H14<1;ISTTEXT(H14));"x";"")
J15=WENN(ODER(H15<1;ISTTEXT(H15));"x";"")
J16=WENN(ODER(H16<1;ISTTEXT(H16));"x";"")
J17=WENN(ODER(H17<1;ISTTEXT(H17));"x";"")
J18=WENN(ODER(H18<1;ISTTEXT(H18));"x";"")
J19=WENN(ODER(H19<1;ISTTEXT(H19));"x";"")
J20=WENN(ODER(H20<1;ISTTEXT(H20));"x";"")
J21=WENN(ODER(H21<1;ISTTEXT(H21));"x";"")

Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4.8


Code:
Option Explicit

Sub Sort_J_I()
'
' Sort_J_I Makro
'

'
   ActiveWorkbook.Worksheets("Tabelle3").Sort.SortFields.Clear
   ActiveWorkbook.Worksheets("Tabelle3").Sort.SortFields.Add Key:=Range("J1:J10" _
       ), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
   ActiveWorkbook.Worksheets("Tabelle3").Sort.SortFields.Add Key:=Range("I1:I10" _
       ), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
   With ActiveWorkbook.Worksheets("Tabelle3").Sort
       .SetRange Range("H1:J10")
       .Header = xlGuess
       .MatchCase = False
       .Orientation = xlTopToBottom
       .SortMethod = xlPinYin
       .Apply
   End With
End Sub
Übrigens, bitte poste keine Bilder. Aus diesen lässt sich nur mit großem Aufwand eine Tabelle im Nachbau erstellen.
Für gezielte Hilfe solltest du deshalb eine anonymisierte Mustertabelle hochladen.   (KLICK!) In diesem Text findest du einen weiteren Link, wie Tabellenausschnitte eingestellt werden können.
Meistens reicht ein relevanter Tabellenausschnitt völlig aus – wichtig ist nur, dass du auch deine Formeln integriert hast.
Bitte passe die Mustertabelle deiner Originaldatei an, damit eventuelle zusätzliche Nachfragen vermieden werden können.
Gruß Günter
Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen.
angebl. von Georg Christoph Lichtenberg (1742-1799)
Top
#3
OK, danke
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste