Discussion:
Auto Filter Auswahl kopieren und einfügen über Makro
(zu alt für eine Antwort)
Christian John
2006-09-18 09:56:01 UTC
Permalink
Hallo Community,

ich benutze Excel 2003.
Ich würde gern die Daten auf einem Tabellenblatt nach einem Kriterium in
einer Spalte filtern und diese Auswahl dann auf ein anderes Tabellenblatt
kopieren.
Wenn ich das makro aufnehme macht er es so wie ich will. Wenn ich das makro
dann einmal ausführe dann macht er den Autofilter noch rein, aber er filtert
nicht....es gibt keine Auswahl zum Kopieren auf Blatt 2...ich verstehe es
überhaupt nicht...was mache ich falsch?

Vielen Dank!

Sub Makro10()
Rows("1:1").Select
Selection.AutoFilter
Selection.AutoFilter Field:=13, Criteria1:="12.12.2006"
Columns("A:S").Select
Selection.Copy
Sheets("Tabelle2").Select
Active.Sheet.Paste
End Sub
Claus Busch
2006-09-18 10:54:45 UTC
Permalink
Hallo Christian,
Post by Christian John
ich benutze Excel 2003.
Ich würde gern die Daten auf einem Tabellenblatt nach einem Kriterium in
einer Spalte filtern und diese Auswahl dann auf ein anderes Tabellenblatt
kopieren.
Wenn ich das makro aufnehme macht er es so wie ich will. Wenn ich das makro
dann einmal ausführe dann macht er den Autofilter noch rein, aber er filtert
nicht....es gibt keine Auswahl zum Kopieren auf Blatt 2...ich verstehe es
überhaupt nicht...was mache ich falsch?
Vielen Dank!
Sub Makro10()
Rows("1:1").Select
Selection.AutoFilter
Selection.AutoFilter Field:=13, Criteria1:="12.12.2006"
Columns("A:S").Select
Selection.Copy
Sheets("Tabelle2").Select
Active.Sheet.Paste
End Sub
VBA verlangt zum Autofiltern die englische Schreibweise des Datums
(MM/DD/YYYY). Folgender Code kopiert dir die Autofilter-Auswahl von
Tabelle1 nach Tabelle2:

Dim LRow As Long

'Falls du die Daten in Tabelle2 an schon vorhandene
'Daten anhängen willst, nimm das Hochkomma vor den
'nächsten beiden Zeilen raus

'LRow = Sheets("Tabelle2").Cells(Rows.Count, 1). _
'End(xlUp).Offset(1, 0).Row

'Hier dein Autofilter-Feld anpassen
With Sheets("Tabelle1")
.Range("A1").Autofilter Field:=13, Criteria1:="12/12/2006"
.Range("A2", .Cells(2, 1).SpecialCells(xlLastCell)). _
SpecialCells(xlCellTypeVisible).Copy _
Destination:=Sheets("Tabelle2").Range("A" & LRow)
.AutoFilterMode = False
End With
--
Mit freundlichen Grüssen
Claus Busch

Win XP Prof SP2; Office 2000 SP3
claus_busch(at)t-online.de
Christian John
2006-09-18 14:35:02 UTC
Permalink
Hi Claus,

danke für deine Antwort...
Bei mir funzt es allerdings nicht...was hat es mit der a2 range auf sich?
wieso wird da die zweite zelle in der ersten Spalte gewählt? Bzw.. wie muss
ich das anpassen? Er soll letztlich alles anzeigen was nach Anwendung des
Filters zu sehen ist...

Ich danke!

Christian
Claus Busch
2006-09-18 14:52:21 UTC
Permalink
Hallo Christian,
Post by Christian John
Hi Claus,
danke für deine Antwort...
Bei mir funzt es allerdings nicht...was hat es mit der a2 range auf sich?
wieso wird da die zweite zelle in der ersten Spalte gewählt? Bzw.. wie muss
ich das anpassen? Er soll letztlich alles anzeigen was nach Anwendung des
Filters zu sehen ist...
der Code war gedacht, die gefilterte Liste von Tabelle1 hinter schon
vorhandene Daten in Tabelle2 anzuhängen. Deswegen werden ab A2 die nach dem
Filtern sichtbaren Zellen kopiert und in Tabelle2 angehängt. Falls du aber
nur kopieren willst ohne anzuhängen und auch die Überschrift mitkopieren
willst, musst du dies auf A1 abändern und unten bei Destination ändern auf
Range("A1")
Schreib doch mal genau was du machen willst.
Oder probiere es abgeändert:

'Hier dein Autofilter-Feld anpassen
With Sheets("Tabelle1")
.Range("A1").Autofilter Field:=13, Criteria1:="12/12/2006"
.Range("A1", .Cells(1, 1).SpecialCells(xlLastCell)). _
SpecialCells(xlCellTypeVisible).Copy _
Destination:=Sheets("Tabelle2").Range("A1")
End With
--
Mit freundlichen Grüssen
Claus Busch

Win XP Prof SP2; Office 2000 SP3
claus_busch(at)t-online.de
Christian John
2006-09-18 15:21:02 UTC
Permalink
Hi Claus,

also jetzt sagt er, dass die copy-methode des Range Objektes nicht
ausgeführt werden konnte...
Er soll die Daten einfach filtern und alles was gefiltert wurde (plus
Überschrift) auf Blatt 2 kopieren (ohne anhängen...).

THX


Dim LRow As Long

With Sheets("Tabelle1")
.Columns("M:M").Select
Selection.NumberFormat = "@"
With Sheets("Tabelle1")
.Range("A1").AutoFilter Field:=13, Criteria1:="39048"
.Range("A1", .Cells(1, 1).SpecialCells(xlLastCell)). _
SpecialCells(xlCellTypeVisible).Copy _
Destination:=Sheets("Tabelle2").Range("A1")
Claus Busch
2006-09-18 15:34:36 UTC
Permalink
Hallo Christian,
Post by Christian John
also jetzt sagt er, dass die copy-methode des Range Objektes nicht
ausgeführt werden konnte...
Er soll die Daten einfach filtern und alles was gefiltert wurde (plus
Überschrift) auf Blatt 2 kopieren (ohne anhängen...).
[Code ausgeschnitten]

so funktioniert es bei mir:
With Sheets("Tabelle1")
.Range("A1").Autofilter Field:=13, Criteria1:="12/12/2006"
.Range("A1", .Cells(1, 1).SpecialCells(xlLastCell)). _
SpecialCells(xlCellTypeVisible).Copy _
Destination:=Sheets("Tabelle2").Range("A1")
End With

Wie ist denn dein Datum in der Spalte M? Wenn du nach der seriellen Zahl
des Datum suchen willst, solltest du Columns("M").NumberFormat = "General"
schreiben. Du vergibst das Format Text und filterst dann nach einer Zahl.
Warum läßt du das Datum nicht TT.MM.JJJJ und schreibst in den Code das
US-Format MM/DD/YYYY?
--
Mit freundlichen Grüssen
Claus Busch

Win XP Prof SP2; Office 2000 SP3
claus_busch(at)t-online.de
Claus Busch
2006-09-18 17:26:30 UTC
Permalink
Hallo Christian,

noch 2 weitere Codes, die bei mir einwandfrei funktionieren:
1.
With Sheets("Tabelle1")
.Columns("M").NumberFormat = "m/d/yyyy"

.Range("A1").Autofilter Field:=13, Criteria1:="11/27/2006"
.Range("A1", .Cells(1, 1).SpecialCells(xlLastCell)). _
SpecialCells(xlCellTypeVisible).Copy _
Destination:=Sheets("Tabelle2").Range("A1")
End With

2.
Du schreibst das Kriteriumsdatum in deine Tabelle in U1 und dann dieser
Code:
With Sheets("Tabelle1")
.Range("A1").Autofilter Field:=13, Criteria1:=.Range("U1").Value
.Range("A1", .Cells(1, 1).SpecialCells(xlLastCell)). _
SpecialCells(xlCellTypeVisible).Copy _
Destination:=Sheets("Tabelle2").Range("A1")
End With
--
Mit freundlichen Grüssen
Claus Busch

Win XP Prof SP2; Office 2000 SP3
claus_busch(at)t-online.de
Christian John
2006-09-19 09:00:01 UTC
Permalink
Hi,

erstmal danke für eure Vorschläge.
Bei folgendem Code bringt er mir immer noch, dass die Copy-Methode des Range
Objekts nicht ausgeführt werden konnte.
Datum braucht nicht erhalten bleiben...ist völlig nebensächlich...finde es
so einfacher.
Mit dem Spezialfilter habe ich es auch nicht hinbekommen...noch nicht einmal
manuell...zumindest nicht wenn ich das Gefilterte auf ein anderes Blatt haben
will...da bringt er den Fehler, dass nur gefilterte Daten auf ein anderes
Blatt kopiert werden können.

ich bin schon fast am Verzweifeln...so eine kleine Sache und soviel Zeit...
:-(

thx


With Sheets("Tabelle1")
Columns("M").NumberFormat = "General"
With Sheets("Tabelle1")
.Range("A1").AutoFilter Field:=13, Criteria1:="39048"
.Range("A1", .Cells(1, 1).SpecialCells(xlLastCell)). _
SpecialCells(xlCellTypeVisible).Copy _
Destination:=Sheets("Tabelle2").Range("A1")
End With
Thomas Ramel
2006-09-19 09:11:56 UTC
Permalink
Grüezi Christian

Christian John schrieb am 19.09.2006
Post by Christian John
Mit dem Spezialfilter habe ich es auch nicht hinbekommen...noch nicht einmal
manuell...zumindest nicht wenn ich das Gefilterte auf ein anderes Blatt haben
will...da bringt er den Fehler, dass nur gefilterte Daten auf ein anderes
Blatt kopiert werden können.
Hast Du denn meinen Hinweis diesbezüglich überlesen?

"Der kann das Gewünschte schon von Haus aus und auch auf ein anderes
Tabellenblatt (dann den Filter aus diesem Blatt heraus starten)"



Mit freundlichen Grüssen
Thomas Ramel (@work)
--
- MVP für Microsoft-Excel -
[Win XP Pro SP-2 / xl2003 SP-1]
Microsoft Excel - Die ExpertenTipps tinyurl.com/cmned
Claus Busch
2006-09-19 09:56:43 UTC
Permalink
Hallo Thomas,

ich arbeite hier mit xl2000 und ich muss noch zu den sichtbaren Zellen
gehen, wenn ich eine Filterauswahl kopieren möchte, weil mir sonst die
ganze Tabelle kopiert wird. Gibt es da Unterschiede zu xl2003? Weil der OP
immer wieder über die Fehlermeldung stolpert, dass die Copy-Methode des
Range-Objektes fehlschlägt. Habe ich ihn durch die Versionsunterschiede auf
einen falschen Weg geschickt?
--
Mit freundlichen Grüssen
Claus Busch

Win XP Prof SP2; Office 2000 SP3
claus_busch(at)t-online.de
Claus Busch
2006-09-19 09:24:04 UTC
Permalink
Hallo Christian,
Post by Christian John
Hi,
erstmal danke für eure Vorschläge.
Bei folgendem Code bringt er mir immer noch, dass die Copy-Methode des Range
Objekts nicht ausgeführt werden konnte.
Datum braucht nicht erhalten bleiben...ist völlig nebensächlich...finde es
so einfacher.
Mit dem Spezialfilter habe ich es auch nicht hinbekommen...noch nicht einmal
manuell...zumindest nicht wenn ich das Gefilterte auf ein anderes Blatt haben
will...da bringt er den Fehler, dass nur gefilterte Daten auf ein anderes
Blatt kopiert werden können.
ich bin schon fast am Verzweifeln...so eine kleine Sache und soviel Zeit...
:-(
wie Thomas schon schrieb, musst du dann den Spezialfilter aus Tabelle2
heraus aufrufen. Kopiere deine Überschriften nach Tabelle2 und schreibe
dann bei Datum dein gewünschtes Datum rein. Rufe dann den Spezialfilter
auf, gib deinen Bereich in Tabelle1 an und als Kriterienbereich den Bereich
A1:S2 auf Tabellenblatt2, kopiere an andere Stelle - hier Tabellenblatt2 A4
z.B. Per Code würde das dann so gehen:

'hier deinen Bereich anpassen
Sheets("Tabelle1").Range("A1:S100"). _
AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Sheets("Tabelle2").Range("A1:S2"), _
CopyToRange:=Sheets("Tabelle2").Range("A4")
--
Mit freundlichen Grüssen
Claus Busch

Win XP Prof SP2; Office 2000 SP3
claus_busch(at)t-online.de
Christian John
2006-09-19 10:00:02 UTC
Permalink
Hallo,

also sorry, dass ich zu blöd war...trotz dessen, dass er den Fehler anzeigte
hat er die Daten korrekt kopiert...jetzt müsste es doch reichen den Fehler
einfach abzufangen und zu ignoriern, oder?

Sorry...wenn ich jetzt noch ne andere (wirklich winzige Frage stelle)...

Wenn ich ein neues Workbook erstellen will und dem einen Namen zuweisen will
(ohne, dass es gleich gespeichert werden muss), also anstatt von Mappe"zahl"
eben einen richtigen Namen...wie mache ich das?

Workbook.add. und dann?

THX
Melanie Breden
2006-09-19 10:19:34 UTC
Permalink
Hallo Christian,
Post by Christian John
Wenn ich ein neues Workbook erstellen will und dem einen Namen zuweisen will
(ohne, dass es gleich gespeichert werden muss), also anstatt von Mappe"zahl"
eben einen richtigen Namen...wie mache ich das?
Workbook.add. und dann?
du kannst den tatsächlichen Namen einer neuen Datei nur durch Speichern ändern.
Willst du evtl. den angezeigten Namen in der Titelleiste ändern?


Mit freundlichen Grüssen
Melanie Breden
--
- Microsoft MVP für Excel -
Microsoft Excel - Die ExpertenTipps http://tinyurl.com/cmned
Das Excel-VBA Codebook http://excel.codebooks.de
Excel-Auftragsprogrammierung
Christian John
2006-09-19 10:46:01 UTC
Permalink
ja, den meine ich

thx

Thomas Ramel
2006-09-19 05:03:16 UTC
Permalink
Grüezi Christian

Christian John schrieb am 18.09.2006
Post by Christian John
ich benutze Excel 2003.
Ich würde gern die Daten auf einem Tabellenblatt nach einem Kriterium in
einer Spalte filtern und diese Auswahl dann auf ein anderes Tabellenblatt
kopieren.
Hast Du, als Alternative zum Autofilter, dir den Spezialfilter schon mal
näher angesehen?

Der kann das Gewünschte schon von Haus aus und auch auf ein anderes
Tabellenblatt (dann den Filter aus diesem Blatt heraus starten).


Mit freundlichen Grüssen
Thomas Ramel (@work)
--
- MVP für Microsoft-Excel -
[Win XP Pro SP-2 / xl2003 SP-1]
Microsoft Excel - Die ExpertenTipps tinyurl.com/cmned
Loading...