Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
780to784
780to784
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Liste zusammen Sortieren, leere Zellen raus!

Liste zusammen Sortieren, leere Zellen raus!
08.07.2006 06:52:43
Henning
Hallo,
ich versuche grade eine Liste die bei mir in Tabellenblat2 steht und aus Tabellenblatt1 erzeugt wurde automatisch zu sortieren.
In Tabelle1 habe ich eine Listen mit 2020 Zeilen, in dieser werden jeden Tag ca. 60 Zeilen verändert. Diese veränderten Daten werden dann mit einer "Wenn" Formael Automatisch nach Tabelle2 übertragen. Dort erscheinen sie dann auch aber immer auf der jewiligen Position wo sie in Tabelle 1 geändert wurden.
Also wenn ich etwas in Zeile 1300 ändere dann ist das in Tabelle 2 auch in Zeiel 1300, jetzt klicke ich nach dem bearbeiten immer auf Sortieren (Auf oder Absteigend)dann werden alle Daten "Sauber untereinander Sortiert", und genau das möchte ich Automatisieren wenn möglich. Ich habe mit einem VBA Code den ich gefunden habe versucht das selber anzupassen, aber bin gescheitert da ich keine VBA-Ahnung habe.
Hier ist der Code den ich gefunden hatte:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 2 Then Exit Sub
Range(Cells(1, 1), Cells(Cells(1, 2).End(xlDown).Row, 2)).Copy
Cells(1, 3).PasteSpecial
Selection.Sort Key1:=Range("D1"), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Range("C1").Select
End Sub

Evtl. kann der ja helfen...
Meine Daten sind in den Spalten a-k und es sind 2020 Zeilen.
Danke schon mal
Gruß
Henning

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Liste zusammen Sortieren, leere Zellen raus!
08.07.2006 13:12:17
fcs
Hallo Henning,
folgender Code reagiert auf Eingabeänderungen in der Tabelle und sortiert die Tabelle2 nach jeder Änderung in der Tabelle neu.
Er muß im VBA-Editor unter "Tabelle1" bzw. der Tabelle mit den Eingabedaten eingefügt werden.
Man könnte das Ganze auch etwas anders aufbauen, indem man die geänderten Zeilen nach Ende der Eingaben per Makro in die 2. Tabelle überträgt. Der Vorteil: Die Datei wird wesentlich kleiner, da in Tabelle2 immer nur ca. 60 Zeilen mit Werten enthalten sind, statt der Formeln für über 2000 Zeilen.
mfg
Franz

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Zeile 1 = 2 ' 1. Zeile in Tabelle1 deren Dateneingabe überwacht werden soll
If Target.Row >= Zeile1 Then
' Sortieren der Daten in Tabelle2
'Sortierbereich Spalten A bis K, Sortierung aufsteigendend nach der Spalte D, Spaltentitel in Zeile 1
Zeile2 = 1 'Zeile mit den Spaltentiteln in Tabelle2
With Sheets("Tabelle2")
.Range(.Cells(Zeile2, "A"), .Cells(.Rows.Count, "K")).Sort Key1:=.Cells(Zeile2 + 1, "D"), _
Order1:=xlAscending, Header:=xlYes, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
End With
End If
End Sub
Beispiel für Übertragen der Daten:
Sub Tabelle2_aktualisieren()
Dim wks1 As Worksheet, wks2 As Worksheet, Zeile1 As Long, Zeile2 As Long, ZeileL As Long
Set wks1 = Sheets("Tabelle1")
Set wks2 = Sheets("Tabelle2")
With wks1
Zeile1 = 2 ' 1. Daten-Zeile in Tabelle1
ZeileL = .UsedRange.Row + .UsedRange.Rows.Count - 1 'Letzte Datenzeile in Tabelle1
'  ZeileL =wks1.Cells(wks1.Rows.Count, "A").End(xlUp).Row 'Letzte Datenzeile in Tabelle1
Zeile2 = 2 '1. Zeile in Tabelle2 in die Daten eingetragen werden sollen
'löschen der vorhandenen Altdaten in Tabelle2
wks2.Range(wks2.Cells(Zeile2, "A"), wks2.Cells(wks2.Rows.Count, "K")).ClearContents
'Daten übertragen von Tabelle 1 nach Tabelle 2
For I = Zeile1 To ZeileL
'Bedingung, die erfüllt sein muss, damit Zeile nach Tabelle2 übertragen werden darf
If .Cells(I, "A") = Date Then
wks2.Range(wks2.Cells(Zeile2, "A"), wks2.Cells(Zeile2, "K")).Value = _
.Range(.Cells(I, "A"), .Cells(I, "K")).Value
Zeile2 = Zeile2 + 1
End If
Next I
End With
' Sortieren der Daten in Tabelle2
'Sortierbereich Spalten A bis K, Sortierung aufsteigendend nach der Spalte D, Spaltentitel in Zeile 1
Zeile2 = 1 'Zeile mit den Spaltentiteln in Tabelle2
With wks2
.Range(.Cells(Zeile2, "A"), .Cells(.Rows.Count, "K")).Sort Key1:=.Cells(Zeile2 + 1, "D"), _
Order1:=xlAscending, Header:=xlYes, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
End With
End Sub

Anzeige
AW: Liste zusammen Sortieren, leere Zellen raus!
11.07.2006 13:30:57
Henning
Hallo,
ich habe das ganze mal zu Probe in einer neuen Mappe eingefügt.
Nun Kommt die Meldung:
Fehler beim Kompilieren:
"Erwartet: Zeilennummer oder Spurmarke oder Anweisung oder Anweisungsende"
Dann wird bei VBA dies zeile in Gelb angezeigt:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Da ich keine Ahnung von VBA habe weiss ich nicht weiter, ne kleiner Tipp wäre nett Danke
Gruß
Henning
AW: Liste zusammen Sortieren, leere Zellen raus!
11.07.2006 14:28:50
fcs
Hallo henning,
in den Namen der Variablen Zeile1 in Zeile 2 war irgendwie ein Leerzeichen reingeraten.
Nach entfernen des Leerzeichens und ggf. Anpassen des Tabllennamen "Tabelle2" sollte es eigentlich passen. Weiter kann ich auch nicht helfen.
Kannst du wenn es jetzt nicht funktioniert mal deine Datei mit ein paar Beispieldaten hier hochladen?

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Zeile1 = 2 ' 1. Zeile in Tabelle1 deren Dateneingabe überwacht werden soll
If Target.Row >= Zeile1 Then
' Sortieren der Daten in Tabelle2
'Sortierbereich Spalten A bis K, Sortierung aufsteigendend nach der Spalte D, Spaltentitel in Zeile 1
Zeile2 = 1 'Zeile mit den Spaltentiteln in Tabelle2
With Sheets("Tabelle2")
.Range(.Cells(Zeile2, "A"), .Cells(.Rows.Count, "K")).Sort Key1:=.Cells(Zeile2 + 1, "D"), _
Order1:=xlAscending, Header:=xlYes, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
End With
End If
End Sub

Gruß
Franz
Anzeige

324 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige