Anzeige
Archiv - Navigation
1028to1032
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

Sortieren von bis

Sortieren von bis
27.11.2008 21:39:08
bis
Hallo zusammen
brauche ein wenig Hilfe
Problem
Tabelle1 Spalte A B C D
Zeile 1 5 25-11-08 E A
Zeile 2 6 12-12-08 A
Zeile 3 1 02-11-08 E A
Zeile 4 2 12-12-08 A
Zeile 5 3 12-12-08 E A
Zeile 6 4 15-11-08 A
möchte nun Tabelle 1 in Tabelle 2 kopieren geht noch
aber dann
in Tabelle 2 sortieren der spalte B wenn Spalte D = A
nach suchkriterien
Eingabe in H1 z.B von : 01-11.08 in I1z.B bis : 15-11-08
und gefundene Zeilen in Tabelle 3 kopieren
weiß jemand einen Rat
im voraus vielen Dank
MfG
Hardy

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

Betreff
Datum
Anwender
Anzeige
AW: Sortieren von bis
28.11.2008 13:30:00
bis
Hallo Hardy,
hier mein Vorschlag. In der Zeile 1 von Tabelle 2 und 3 sind dabei Spaltentitel eingetragen.
Gruß
Franz

Option Explicit
Private wksQuelle As Worksheet, wksZiel As Worksheet, wksFilter As Worksheet
Private objFilter As Filter
Sub DatenAufbereiten()
Call DatenUebernehmen
Call DatenFiltern
End Sub
Sub DatenUebernehmen()
Set wksQuelle = Worksheets("Tabelle1")
Set wksZiel = Worksheets("Tabelle2")
'Altdaten in Ziel ab Zeile 2 löschen
With wksZiel
If .AutoFilterMode = True Then
For Each objFilter In .AutoFilter.Filters
If objFilter.On = True Then
.ShowAllData
Exit For
End If
Next
End If
If .Cells(.Rows.Count, 1).End(xlUp).Row > 1 Then
.Range(.Rows(2), .Rows(.Cells(.Rows.Count, 1).End(xlUp).Row)).ClearContents
End If
End With
'Daten-Zeilen aus Quelle ab Zeile 1 nach Ziel ab Zelle A2 kopieren
With wksQuelle
.Range(.Rows(1), .Rows(.Cells(.Rows.Count, 1).End(xlUp).Row)).Copy _
Destination:=wksZiel.Cells(2, 1)
End With
End Sub
Sub DatenFiltern()
Set wksFilter = Worksheets("Tabelle2")
Set wksZiel = Worksheets("Tabelle3")
'Altdaten in Ziel-Tabelle ab Zeile 2 löschen
With wksZiel
If .Cells(.Rows.Count, 1).End(xlUp).Row > 1 Then
.Range(.Rows(2), .Rows(.Cells(.Rows.Count, 1).End(xlUp).Row)).ClearContents
End If
End With
With wksFilter
If .AutoFilterMode = True Then
'ggf. alle Daten anzeigen und Autofilter abschalten
For Each objFilter In .AutoFilter.Filters
If objFilter.On = True Then
.ShowAllData
.AutoFilterMode = False
Exit For
End If
Next
End If
'Spalten A bis D sortieren und Autofilter setzen
With .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp).Offset(0, 3))
'Autofilter aktivieren für Spalten A bis D
.AutoFilter
'Daten nach Spalte B sortieren
.Sort Key1:=.Range("B1"), Order1:=xlAscending, Header:=xlYes, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
'Filter für Spalte D setzen
.AutoFilter Field:=4, Criteria1:="A"
'Filter mit Datumsbereich für Spalte B setzen
.AutoFilter Field:=2, Criteria1:=">=" & CDbl(.Range("H1").Value), _
Operator:=xlAnd, Criteria2:=" 1 Then
.Range(.Cells(2, 2), .Cells(.Rows.Count, 4).End(xlUp)).EntireRow.Copy _
Destination:=wksZiel.Cells(2, 1)
Application.CutCopyMode = False
Else
MsgBox "Filter ergab keine zu kopierenden Daten!"
End If
End With
wksZiel.Activate
End Sub


Anzeige
AW: Sortieren von bis
28.11.2008 21:31:29
bis
Hallo Franz
Ich bin Total Begeistert,du hast mir super geholfen.
wie kan man sowas lernen?
noch eine kleine Frage ich möchte den Autofilter nicht haben schreibst ja auch ist
zum abstellen aber wie.(Lieber ganze Tabelle1 kopieren und dann zeilen mit A in Spalte D
rot färben.
Suchkriterien von 01-11-08 bis 30-11-08
es wird aber auch z.B 02-12-08 angezeigt
kann man da noch etwas verändern?
nochmals vielen Dank für die Super gute Hilfe
Gruß
Hardy
AW: Sortieren von bis
01.12.2008 12:52:59
bis
Hallo Hardy,
natürlich kann man auch die gesamte Tabelle1 kopieren und dann anfangen den Filter aufzubereiten usw.
Ist aber ggf. etwas mühseliger, als wenn man "einfach" nur die Daten rüberkopiert und der Rest der Zieltabelle ist schon für die Eingaben vorbereitet.
Mit dem Datum kann es Probleme geben, wenn in den Datumszellen das Datum als Text im Format TT-MM-JJ steht und nicht ein richtiges Exceldatum (z.B. 01.12.2008), das per Format in die Anzeige TT-MM-JJ gebracht wird. Der Filter Funktioniert dann nicht.
Nachfolgend die Makros so modifiziert, dass das 1. Makro die Tabelle1 kopiert, in Spalte B ggf. das Text-Datum in einen Exceldatum-Zahlenwert umwandelt, in Spalte D eine bedingte Formatierung für den Wert "A" setzt, und die beiden Eingabezellen für Start- und Ende-Datum markiert.
Das 2. Makro filtert dann die Daten und kopiert sie aus dem aktiven Blatt in ein neues Tabellenblatt
Gruß
Franz

Private wksQuelle As Worksheet, wksZiel As Worksheet
Sub DatenAufbereiten2()
Dim strTabelle As String, Zelle As Range
'Tabelle 1  kopieren
strTabelle = "Tabelle1"
With Worksheets(strTabelle)
.Copy after:=Worksheets(strTabelle)
End With
Set wksQuelle = ActiveSheet
With wksQuelle
'Spalte D all Zellen mit A markieren per bedingter Formatierung
.Columns(4).FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, Formula1:="A"
With .Columns(4).FormatConditions(1)
.Interior.ColorIndex = 3 'rote Zellfarbe
End With
'Spalte B in Datum-umwandeln und formatieren
.Columns(2).NumberFormat = "DD-MM-YY"
For Each Zelle In .Range(.Cells(2, 2), .Cells(.Rows.Count, 2).End(xlUp))
If IsDate(Zelle) Then
Zelle.Value = CDate(Zelle.Value)
End If
Next
'Daten nach Spalte B sortieren
.Cells.Sort Key1:=.Range("B1"), Order1:=xlAscending, Header:=xlYes, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
'Eingabefelder für Start- und Ende-Datum markieren und formatieren
With .Range("H1")
.Interior.ColorIndex = 22
.AddComment Text:="Hier Start-Datum eintragen"
.NumberFormat = "DD-MM-YY"
End With
With .Range("I1")
.Interior.ColorIndex = 22
.AddComment Text:="Hier Ende-Datum eintragen"
.NumberFormat = "DD-MM-YY"
End With
End With
End Sub
Sub DatenFiltern2()
Dim objFilter As Filter, Spalte As Long
Set wksQuelle = ActiveSheet
'Neues Blatt für gefilterte daten einfügen
Worksheets.Add after:=wksQuelle
Set wksZiel = ActiveSheet
With wksZiel
'Spalten in Zieltabelle formatieren wie in Quelle
With wksQuelle
.Range(.Columns(1), .Columns(4)).Copy
End With
.Cells(1, 1).PasteSpecial Paste:=xlPasteFormats
End With
With wksQuelle
If .AutoFilterMode = True Then
'ggf. alle Daten anzeigen und Autofilter abschalten
For Each objFilter In .AutoFilter.Filters
If objFilter.On = True Then
.ShowAllData
.AutoFilterMode = False
Exit For
End If
Next
End If
' Autofilter setzen
With .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp).Offset(0, 3))
'Autofilter aktivieren für Spalten A bis D
.AutoFilter
'Filter für Spalte D setzen
.AutoFilter Field:=4, Criteria1:="A"
'Filter mit Datumsbereich für Spalte B setzen
.AutoFilter Field:=2, Criteria1:=">=" & CDbl(.Range("H1").Value), _
Operator:=xlAnd, Criteria2:=" 1 Then
.Range(.Cells(1, 4), .Cells(.Rows.Count, 4).End(xlUp)).EntireRow.Copy _
Destination:=wksZiel.Cells(1, 1)
Application.CutCopyMode = False
wksZiel.Range("H1").Clear
wksZiel.Range("I1").Clear
Else
MsgBox "Filter ergab keine zu kopierenden Daten!"
End If
'Autofilter wieder abschalten
.AutoFilterMode = False
End With
wksZiel.Activate
End Sub


Anzeige
AW: Sortieren von bis
02.12.2008 17:38:00
bis
Hallo Franz
Ersmal Danke für die zweite Hilfe.
Hast aber Recht ist die schlechtere Lösung(war keine gute Idee von mir).
Habe aber immer noch das Problem mit dem Format der Eigabe Zellen nach der die Spalte
Sortiert werden soll.
Die Eingabe in Zelle J5 von 11-11-08 bis in Zelle K5 17-11-08 (Zellnummern habe ich geänder)
Benutzerdefiniertes Format 00-00-00
Spalte B Eingabe in B1 z.B. 17-11-08
in B2 z.B. 11-11.08 usw. sollen nach Benutzer Format Sortiert werden.
Werde versuchen das mit den Formaten aus der zweiten Lösung,in die erste absolute Top-Lösung
einzubauen.
Also nochmals vielen Dank
MfG
Hardy
Anzeige
AW: Sortieren von bis
02.12.2008 17:49:22
bis
Hallo Franz
Ersmal Danke für die zweite Hilfe.
Hast aber Recht ist die schlechtere Lösung(war keine gute Idee von mir).
Habe aber immer noch das Problem mit dem Format der Eigabe Zellen nach der die Spalte
Sortiert werden soll.
Die Eingabe in Zelle J5 von 11-11-08 bis in Zelle K5 17-11-08 (Zellnummern habe ich geänder)
Benutzerdefiniertes Format 00-00-00
Spalte B Eingabe in B1 z.B. 17-11-08
in B2 z.B. 11-11.08 usw. sollen nach Benutzer Format Sortiert werden.
Werde versuchen das mit den Formaten aus der zweiten Lösung,in die erste absolute Top-Lösung
einzubauen.
Also nochmals vielen Dank
Anzeige
AW: Sortieren von bis
02.12.2008 17:54:00
bis
Hallo Franz
Ersmal Danke für die zweite Hilfe.
Hast aber Recht ist die schlechtere Lösung(war keine gute Idee von mir).
Habe aber immer noch das Problem mit dem Format der Eigabe Zellen nach der die Spalte
Sortiert werden soll.
Die Eingabe in Zelle J5 von 11-11-08 bis in Zelle K5 17-11-08 (Zellnummern habe ich geänder)
Benutzerdefiniertes Format 00-00-00
Spalte B Eingabe in B1 z.B. 17-11-08
in B2 z.B. 11-11.08 usw. sollen nach Benutzer Format Sortiert werden.
Werde versuchen das mit den Formaten aus der zweiten Lösung,in die erste absolute Top-Lösung
einzubauen.
Also nochmals vielen Dank
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige