Excel-VBA-Sortieren einen benannten Bereich, der von einer bestimmten Spalte
Habe ich einen Bereich ausgewählt und in diesem Bereich möchte ich Sortieren nach einer bestimmten Spalte, so dass jede Zeile ist immer die gleiche, d.h. die Sortieren-Funktion verschiebt das gesamte Zeilen basierend auf welcher Spalte ich ausgewählt habe, zu Sortieren.
Mein code bisher ist:
Sub CustomSortAscendingExcel(ByVal control As IRibbonControl, ByRef cancelDefault As Variant)
Dim selRange As range
Dim usedRange As range
Dim checkRange As range
Dim shtData As Worksheet
Set shtData = Worksheets("Data")
shtData.Activate
shtData.Unprotect
Set selRange = Selection
Set usedRange = returnUsedRange
Set checkRange = Intersect(usedRange, selRange)
If Not Application.Intersect(usedRange, selRange) Is Nothing Then
With ActiveSheet
usedRange.Sort Key1:=selRange, Order1:=xlAscending, DataOption1:=xlSortNormal, MatchCase:=False, SortMethod:=xlPinYin, _
Header:=xlNo, Orientation:=xlSortColumns
.Sort.Apply
End With
Und ähnliche für die Sortierung Absteigend. Dies funktioniert gut für column1. Mein problem ist, dass für die Spalten 2, 3, 4, es funktioniert nur richtig für diejenigen Zeilen, die einen Wert in Spalte 1 nicht für alle, die nicht. Zum Beispiel in dem Bild unten ist die Sortierung nach Spalte 3 richtig verschiebt die ersten 9 Zeilen, aber nicht die letzten beiden.
Kann jeder jeden schlagen eine Möglichkeit dieses Problem zu beheben? Danke!
usedRange
im code?usedRange bezieht sich hier auf die ganze Tabelle (A:2, D:11), selRange bezieht sich auf die Spalte, die ich ausgewählt habe zu Sortieren
Idee ist gut, es zu lösen... "+1 " für ihn unten.
InformationsquelleAutor baarkerlounger | 2013-05-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zeichnete ich ein einfaches makro, das wählt Range("A1:D5") , gilt filter, sortiert in aufsteigender Reihenfolge auf der Grundlage der 3. Spalte (C)
schau mal hier:
Nun, es gibt nicht viel Sie tun, um Ihr problem zu beheben 🙂
look HIER
Ich bekomme einen "Subscript out of range-Fehler' Auf der 3. Zeile? Ich bin auch noch nicht sicher, was die Filterung ist, da es sich nicht verstecken nichts - sorry, wenn ich bin ungewöhnlich langsam hier!
debug.drucken und überprüfen Sie den Wert der markierten Zeile in gelb. der Maus über und sehen, warum youre out of range. Sie gelten autofilter Sortieren zu können, indem Sie header-Kriterien. es hat eine zusätzliche/andere Funktionalität zu verstecken ( filter ) Zeilen, aber es ist nicht, was Sie brauchte, nach Ihrer Frage.
Es stellt sich heraus, meine original-code funktioniert, das problem war, wie ich berechnet der letzten verwendeten Zeile in meinem usedRange. Ich bin wirklich Leid zu haben verschwendet Ihre Zeit und schätzen Sie die Hilfe - da diese Lösung auch funktioniert, werde ich es markieren gelöst
InformationsquelleAutor