Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1460to1464
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Nicht angrenzende Spalten sortieren

Nicht angrenzende Spalten sortieren
25.11.2015 09:35:17
Chris
Hallo Forum,
ich versuche mehrere, nicht angrenzende Spalten zu sortieren. Der variable range B2:B&ende sowie K2:S&ende funktionieren, sobald ich F2:F&ende hinzunehme, streikt das Makro - "falsche Anzahl an Argumenten oder ungültige Zuweisung zu einer Eigenschaft". Bei "Orientation:=xlTopToBottom ist ein gelber Pfeil daneben...
In den Spalten B und F befinden sich als Text formatierte Datumswerte.
Jmd eine Idee? Gruß Chris
Sub sortieren()
ende = Sheets("Tab").Range("S2:S1000").Find(What:="*", SearchOrder:=xlByRows, SearchDirection:= _
xlPrevious).Row
Sheets("Tab").Range("B2:B" & ende, "F2:F" & ende, "K2:S" & ende).Sort _
Key1:=Sheets("Tab").Range("M2"), Order1:=xlDescending, _
Header:=xlGuess, MatchCase:=False, _
Orientation:=xlTopToBottom
end 

Sub

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Nicht angrenzende Spalten sortieren
25.11.2015 09:57:36
Daniel
Hi
du kannst immer nur zusammenhängende Zellen sortieren.
das Sortierkriterium muss zu diesem Zellbereich gehören.
dh. du musst deine Spalten einzeln sortieren.
soll für alle Spalten das gleiche Sortierkriterium verwendet werden, so musst du die kriteriumsspalte kopieren und vor jeder Sortierspalte einfügen, damit Kriteriumsspalte und Sortierspalte einen zusammenhängenden Zellbreich bilden.
wenn du für alle Spalten das gleiche sortierkriterium hast, wäre vielleicht folgendes vorgehen sinnvoller:
1. kopiere alle Zellen in einen freien Bereich oder ein neues Blatt
2. sortiere den gesamten Bereich nach dem Sortierkriterium
3. kopiere die aus der unter 1 angelegten Kopie die Spalten, die nicht sortiert werden sollen und füge sie wieder in die Originaltabelle ein
4. Lösche die unter 1 angelegte Tabelle wieder.
Gruß Daniel

Anzeige
AW: Nicht angrenzende Spalten sortieren
25.11.2015 10:41:14
Chris
Hallo Daniel,
danke für deine Antwort. Ich habe mal ein makro gebastelt, das sogar läuft :-)
zwei Fragen:
a) Wenn man nur zusammenhängende Bereich sortieren kann, wieso kann ich B:B und K:S getrennt sortieren. F jedoch nicht. B und K liegen nicht zusammen.
b) "usedrange" löscht ja alle Zellen mit Inhalt. Kann man usedrange auch auf einen bestimmten Bereich eingrenzen? Also zum Beispiel: range("A:K").usedrange.clearontents oder so ....
Hier mein makro:
Sub neuerVersuch()
ende = Sheets("TAB").Range("S2:S2000").Find(What:="*", SearchOrder:=xlByRows, SearchDirection:= _
xlPrevious).Row
With Sheets("TAB")
'entsprechende Spalten zusammenhängend kopieren
.Range("B2:B" & ende).Copy Destination:=.Range("BX2") 'Datum AKT
.Range("F2:F" & ende).Copy Destination:=.Range("BY2") 'Datum DAKT
.Range("K2:T" & ende).Copy Destination:=.Range("BZ2") 'Restliche Angaben
'zusammenhängende Spalten sortieren
.Range("BX2:CI" & ende).Sort _
Key1:=.Range("CB2"), Order1:=xlAscending, _
Header:=xlGuess, MatchCase:=False, _
Orientation:=xlTopToBottom
'Alles zurückkopieren
.Range("BX2:BX" & ende).Copy Destination:=.Range("B2")   'Datum AKT
.Range("BY2:BY" & ende).Copy Destination:=.Range("F2")   'Datum DAKT
.Range("BZ2:CI" & ende).Copy Destination:=.Range("K2")   'Restliche Angaben
'Alle zuerst kopierten Angaben löschen
.Range("BX:CI").ClearContents
End With
End Sub

Anzeige
AW: Nicht angrenzende Spalten sortieren
25.11.2015 11:05:04
Daniel
Hi
das Problem ist, dass du die Funktionsweise der Range-Funtkion nicht verstanden hast.
range hat zwei Varianten:
a) zwei Parameter
die benannten Parameter bilden die Grenzen des Bereichs, alle dazwischen liegenden Zellen werden verwendet.
als Parameter können Range-Objekte oder Texte die Zelladressen entsprechen, verwendet werden.
b) ein Parameter
dann muss dieser Parameter ein Textstring sein, welcher einer gültigen Zelladresse entspricht, es werden die beschriebenen Zellen verwendet, es können mehrere getrennte Zellbereiche angegeben werden, dann müssen die Bereiche innerhalb des Strings mit Komma getrennt angegeben werden.
dein .Range("B2:B" & ende, "K2:S" & ende).Sort funktioniert, weil das der Range-Variante mit 2 Parametern entspricht und du hierbei den Zellbereich von B2 bis S-ende ansprichst.
das ist ein zusammenhängender Zellbereich, den du sortieren kannst.
dein .Range("B2:B" & ende, "F2:F" & ende, "K2:S" & ende).Sort funktioniert nicht, weil du hier 3 Parameter angibst und dir damit schon die Range-Funktion den Fehler erzeugt.
wenn du mit Range getrennte Zellbereiche erzeugen willst, musst du diese in EINEM Textstring beschreiben, das würde dann so aus sehen (B, K-S)
.Range("B2:B" & ende & ",K2:S" & ende).Sort
.Range("B2:B" & ende & ",F2:F" & ende & ",K2:S" & ende).Sort
bzw ohne Variablen damits deutlich wird:
.Range("B2:B99,K2:S99").Sort
.Range("B2:B99,F2:F99,K2:S99").Sort

nur so bekommst du nicht zusammenhängende Zellbereiche und dann streikt das Sort.
Gruß Daniel

Anzeige
AW: Nicht angrenzende Spalten sortieren
25.11.2015 11:12:09
Daniel
zu b)
kannst du auch eingrenzen, aber dann so:
ActiveSheet.Usedrange.Columns(1).Resize(, 11).Clearcontents
oder so:
Range(ActiveSheet.Usedrang.Coumns(1), ActiveSheet.Usedrange.Columns(11)).ClearContents
Gruß Daniel

AW: Nicht angrenzende Spalten sortieren
25.11.2015 12:49:17
Chris
Hallo Daniel,
danke für deine Mühe. Das sind Erklärungen mit den der Anfänger was anfangen kann, im Gegensatz zur F1-Hilfe.
Gruß
Chris

warum dann noch offen? owT
25.11.2015 12:54:49
Sheldon
Gruß
Sheldon

307 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige