Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
424to428
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
424to428
424to428
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

variablen Bereich markieren und sortieren

variablen Bereich markieren und sortieren
07.05.2004 14:11:08
Fritz
Hallo VBA-Spezialisten,
ich bin auf eure Hilfe angewiesen.
Ich möchte in einer Tabelle ab Zeile 4 die Spalten A und B bis zur letzten Zeile markieren, in der in der Spalte A ein Wert eingetragen ist. Achtung: In dieser Tabelle sind in Spalte A Formeln eingetragen, die als Ergebnis den Eintrg eines Textes oder keinen Eintrag ("") liefern kann. Anschließend soll der markierte Bereich nach Spalte A (aufsteigend) sortiert werden.
Das ganze soll - wenn möglich - automatisch beim Aktivieren der Tabelle (Tabelle1) erfolgen.
Ich möchte mich bereits an dieser Stelle für eure Hilfe bedanken.
Mfg
Fritz

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: variablen Bereich markieren und sortieren
07.05.2004 14:25:42
Heinz
Hallo Fritz,
hast Du Spaltenbeschriftungen über deinen Spalten (wenn ja, immer in der
gleichen Zeile, wenn ja in welcher)?
Heinz
AW: variablen Bereich markieren und sortieren
Fritz
Hallo Heinz,
In der Tabelle stehen in den Spalten A und B in der Zeile 3 Spaltenüberschriften. Die Tabelle soll ab Zeile 4 (Spalte A aufsteigend) sortiert werden, wie gesagt bis zu der Zeile, in der in der Spalte A letztmalig ein Wert eingetragen ist.
Ich hoffe, Du kommst mit diesen Ausführungen klar und würde mich freuen, wenn Du mir weiterhelfen kannst.
Gruß
Fritz
AW: variablen Bereich markieren und sortieren
07.05.2004 15:23:54
Heinz
Hallo Fritz,
Damit kannst Du's mal probieren.

Sub A_B_Sortieren()
Dim Ez As Long    'erste Zeile (hast Du vorgegeben)
Dim Lz As Long    'letzte Zeile (wird ermittelt)
Spalte = "A"      'Spalte, in der die letzte Zeile ermittelt werden soll
Ez = 4        'Vorgabe
Lz = ActiveSheet.Cells(Rows.Count, Spalte).End(xlUp).Row  'ermitellt letzte Zeile
ActiveSheet.Range(Spalte & Ez & ":B" & Lz).Select
Selection.Sort Key1:=ActiveCell, Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal                              'sortiert
Range("A1").Select                                     'geht auf Zelle A1
End Sub

Probiers mal aus.
Wenn's klappt, dann können wir's auch an das
"anspringen" des Tabellenblattes anknüpfen.
Heinz
Anzeige
AW: variablen Bereich markieren und sortieren
Heinz
Da ich jetzt dann weg muss,
hier der Code, der beim activieren der Tabelle aktiv wird.
Dazu solltes Du im Visual-basic-Editor das Codefenster für die Tabelle
auswählen, in der Deine Tabelele steht.
Dort müssen die Zeilen rein.

Private Sub Worksheet_Activate()
Dim Ez As Long
Dim Lz As Long
Spalte = "A"
Ez = 4     'wenn die Zeile vorab definiert ist
' ODER
' Ez = InputBox("Bitte die Zeilennummer eintragen, ab der sortiert werden soll (ohne Spaltenüberschriften)")
' wenn die Zeile abgefragt werden soll
Lz = ActiveSheet.Cells(Rows.Count, Spalte).End(xlUp).Row
ActiveSheet.Range(Spalte & Ez & ":B" & Lz).Select
Selection.Sort Key1:=ActiveCell, Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Range("A1").Select
End Sub

Viel Spaß noch
Heinz
Anzeige
AW: variablen Bereich markieren und sortieren
Fritz
Hallo Heinz,
vielen Dank für Deine Hilfe.
Ich habe den Code getestet. Es funktioniert dann, wenn in der Tabelle keine Formeln enthalten sind. Sind Formeln enthalten (wie in der betreffenden Tabelle), erscheinen, nach der Sortierung zuerst die Zeilen, in denen die Formel in der Spalte A den Wert "leer" liefert ("") und erst danach (korrekt sortiert) die Zeilen mit Werten.
Vielleicht kannst Du aufgrund meines Hinweises die Sache noch korrigieren. Wäre schön.
Ansonsten noch einmal vielen Dank für Deine Hilfe. Da ich nach und nach VBA erlernen will, finde ich es nett, dass Du Dir soviel Mühe machst und den Code noch mit Kommentaren versiehst.
Grüße und schönes Wochenende
Fritz

Anzeige
AW: variablen Bereich markieren und sortieren
10.05.2004 10:30:15
Heinz
Hallo Fritz
Ich habe das mal probiert - und noch nicht ganz kapiert.
Spalte A Spalte B
0................0 in der A-Spalte Formel =wenn(B2&gt0;12;0)
3................3
3................0
3................3
3................0
3................0
4................2
7................8
9................9
12..............2 in der A-Spalte Formel =wenn(B11&gt0;12;0)
65..............8
.................0 in der A-Spalte Formel =wenn(B13&gt0;12;"")
Die Tabelle ist nach dem sortieren abgebildet, d.h. wenn durch eine Formel eine
leere Zelle erreicht wird, also "" (letzte Zeile), dann wird beim aufsteigenden sortieren die Formel ans (untere) Ende der Tabelle gesetzt.
Wenn Du allerdings eine "0" ausgeben lässt, dann kommen die Zellen natürlich an
den Anfang.
Was gibt denn Deine Formel aus?
Heinz
Anzeige
AW: variablen Bereich markieren und sortieren
Fritz
Hallo Heinz,
ich stell man eine Beispieldatei hoch, in der sind auch einige Hinweise (in Tabelle2) enthalten. Vielleicht hilft Dir das weiter.
Vielen Dank für Deine Mühe.
Gruß
Fritz
https://www.herber.de/bbs/user/6179.xls
AW: variablen Bereich markieren und sortieren
11.05.2004 12:16:32
Heinz
Hallo Fritz
mal ein anderer Weg (Achtung: Ich lasse Deine Tabelle in "Tabelle1" auch in Zeile 4 beginnen.
- Länge der Tabelle in Tabelle1 bestimmen
- In Tabelle2 Formeln einfügen
- Formeln nach unten kopieren
- Formeln in Werte umwandeln
- Sortieren

Sub Sort()
02..Dim Ze As Long
....'variable für erste Zeilennummer der Tab in Blatt Tabelle1
03..Dim Za As Long
....'variable für letzte Zeilennummer der Tab in Blat Tabelle1
04..Sheets("Tabelle1").Activate     'aktiviert Arbeitsblatt Tabelle1
05..Za = 5                          'bestimmt Zeilenanfang als Zeile 5 (Vorgabe)
06..Ze = Range("A65536").End(xlUp).Row
....'bestimmt Tabellenende (letzte Zeile)
07..Sheets("Tabelle2").Activate     'aktiviert Tabelle2
08..Range("A5").Activate        'fügt in A5 die Formel ein
09..ActiveCell.FormulaR1C1 = _
......."=IF(AND(ISTEXT(Tabelle1!RC),Tabelle1!RC[2]=""x""),Tabelle1!RC,"""")"
10..Range("B5").Activate        'fügt in B5 die Formel ein
11..ActiveCell.FormulaR1C1 = _
......."=IF(AND(ISTEXT(Tabelle1!RC[-1]),Tabelle1!RC[1]=""x""),Tabelle1!RC,"""")"
1..Range("A5:B5").Select       'aktiviert Bereich A5 bis B5 (mit den Formeln)
13..Selection.AutoFill Destination:=Range("A5" & ":B" & Ze)
....'auto Fill nach unten
14..Range("A" & Za & ":B" & Ze).Select  'markiert Tabelle
15..Selection.Copy                      'kopieren
16..Selection.PasteSpecial Paste:=xlPasteValues 'fügt Werte ein
17..Range("A5:A" & Ze).Select           'markiert Texte in Spalte A
18..Selection.TextToColumns Destination:=Range("A5"), DataType:=xlDelimited, _
19..TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
.......Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
.......:=Array(1, 1), TrailingMinusNumbers:=True   'fügt Werte ein
20..Range("A5:B" & Ze).Select           'markiert ganze Tabelle
21..Selection.Sort Key1:=Range("A5"), Order1:=xlAscending, Header:=xlNo, _
.......OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
.......DataOption1:=xlSortNormal       'sortiert
22..Range("A5").Select                  'geht in Zelle A5
End Sub

Da ich bei der Übernahme von Texten immer ein "'" Zeichen erhalte (keine Ahnung warum), dass man nur in der Eingabe-Zeile sieht (aber das beim sortieren stört), habe ich in den Zeilen 17 bis 19 einen Zwischenschritt eingebaut (entspricht einen "Daten-Text in Spalten einfügen" über das Menue und wird eigentlich eingesetzt um Werte aus einer Datenbank zu übernehmen).
Du kannst das Makro natürlich ablaufen lassen, wenn Du die Tabelle aktivierst, aber da Du wahrscheinlich mal auch so auf die Tabelle2 gehst, würde ich Dir eher für zu einem Schalter raten oder das Makro bei Bedarf mit einem Tastaturbefehl starten.
So OK?
Heinz
Anzeige
AW: variablen Bereich markieren und sortieren
Fritz
Hallo Heinz,
vielen Dank für die Menge an Arbeit, die Du für mein Anliegen investiert hast.
Möchte Dir auch kurz mitteilen, dass die Sache jetzt auch (fast wie gewünscht) funktioniert. Nur, wenn in der Tabelle1 der erste Datensatz nicht gewählt (markiert) ist, beginnt die Auflistung in der Tabelle2 komischerweise immer erst in Zeile 5 (Zeile 4 bleibt leer). Aber damit kann ich eigentlich gut leben.
Schöne Grüße
Fritz
AW: variablen Bereich markieren und sortieren
11.05.2004 20:38:20
Heinz
Hallo Fritz,
ich habe beide Tabellen (sowohl in Tabelle1 als auch in Tabelle2) so angelegt, das
die Spaltenbeschriftungen in Zeile 4 und die Daten in Zeile 5 beginnen.
Vielleicht ist das bei Dir noch unterschiedlich. In Deinem Beispiel waren die
Spaltenbeschriftungen in unterschiedlichen Zeilen.
Schönen Abend
Heinz
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige