Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1348to1352
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

Excel gefilterte Zeilen per Makro kopieren

Excel gefilterte Zeilen per Makro kopieren
12.02.2014 12:39:21
Kruse
Ich habe eine Excel Datei mit Daten in ca. 10.000 Zeilen im Blatt 1. Diese Daten werden regelmäßig gefiltert, dabei bleiben unterschiedlich viele Zeilen sichtbar (zwischen 0 und ca.1000). Gefiltert wird per Makro von Blatt aus. Bisher hab ich die Zeilen von Hand kopiert und in Blatt 2 eingefügt, das möchte ich nun mit einem Makro erledigen. Mit dem Makrorecorder klappt das nicht, weil ja nicht im die gleichen Zeilen (Zeilennummern) sichtbar bleiben. Wäre schön wenn es dafür eine Lösung gibt.
Gruss Peter

19
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel gefilterte Zeilen per Makro kopieren
12.02.2014 12:56:15
hary
Moin
Das geht mit Range(xxxxx).SpecialCells(xlCellTypeVisible).Copy
gruss hary

AW: Excel gefilterte Zeilen per Makro kopieren
12.02.2014 15:09:15
Kruse
Hallo Hary
mit Range geht das nicht, da ja nicht immer die selben Zeilen nach Filtern sichtbar sind. Mal sind es z.B. die Zeilen 15, 19, 154 ein anders mal sind 311, 509, 8450

AW: Excel gefilterte Zeilen per Makro kopieren
12.02.2014 13:05:52
Matze
Hallo Peter,
- in welchen Bereich liegt deine Tabelle?
- kann man UsedRange benutzen um die letzte Zeile zu ermitteln ?
- oder ist ein Spalte(x?) als Max zeilenende zu benutzen?
- betrifft es alle Spalten die kopiert werden sollen oder nur ein best. Bereich?
- Name der Quelltabelle?
- Name der Zieltabelle?
- Deine Datei uploaden? oder eine Musterdatei mit ein paar wenigen Zeilen wie der Aufbau ist?
Fragebogen ausfüllen grins
Matze

Anzeige
AW: Excel gefilterte Zeilen per Makro kopieren
12.02.2014 14:56:57
Kruse
Der Bereich der Quelltabelle ist von B10 bis AX 10000, es werden aber nahezu täglich ein paar Zeilen mehr, weil die Tabelle ständig ergänzt wird. Die Zeilen darüber sind der Listen- und Kriterienbereich zum Filtern. Die Zieltabelle in die kopiert werden soll beginnt auch bei B10. Darin enthaltene alte Daten sollen komplett überschrieben werden, auch wenn die kopierten Zeilen weniger sind als die alten Zeilen
Zeilenende sollte mit UsedRange ermittelt werden, da in den Zeilen nicht unbedingt in jeder Zelle (B-AX) Daten stehen. Es können aber nach Filtern 0 - ca. 1000 Zeilen sein. Bei 0 gefilterte Zeilen wäre die nächste Zeile die Überschrift des Listenbereiches, diese darf natürlich nicht kopiert werden.
Es muss mindestens der Bereich B-AX der sichtbaren Zeilen gefiltert werden, es wäre aber vielleicht besser die kompletten Zeilen zu kopieren für den Fall das ich mal den Bereich über AX hinaus erweitern muss dann brauch ich das Makro nicht zu ändern
Nennen wir die Quelltabelle einfach Blatt 1 und die Zieltabelle Blatt 2, das kann ich ja jederzeit im Makro ändern

Anzeige
AW: Excel gefilterte Zeilen per Makro kopieren
12.02.2014 15:50:26
Kruse
Habe vergessen das Häckchen zu setzen das meine Frage noch nicht beantwortet ist :-(

AW: Excel gefilterte Zeilen per Makro kopieren
12.02.2014 16:16:53
Matze
Hallo Kruse,
Ich gehe nun davon aus, das die Filter Zeile in Zeile 10 ist, somit werden die darunterliegenden Daten
B11:AX(Filterung) in die Zielmappe ab Zeile B11 eingefügt.
Vor Beginn des Kopierens wird der Zielbereich gelöscht.
Wenn was nicht hinhaut Mappe ohne speichern schließen - leg dir eine Kopie an zum testen,
ich will hier nix kaputt machen.
Option Explicit
Sub AutofilterErgebnisKopieren()
Dim letzteZ As Long
Dim WksQ As Worksheet
Dim WksZ As Worksheet
Set WksQ = Worksheets("Quelle")
Set WksZ = Worksheets("Gefiltert")
'Bereich beginnt unterhalb der Filterzeile OffSet(1)
WksQ.AutoFilter.Range.Offset(1).Resize(WksQ.AutoFilter.Range.Rows.Count - 1).SpecialCells( _
xlCellTypeVisible).copy
With WksZ
.Rows("11:3000").Delete 'gefilterte Zeilen anpassen Maxwert
.Cells(11, 2).PasteSpecial Paste:=xlFormulas 'einfügen ab Zeile 11,Spalte2 (B11)
End With
Application.CutCopyMode = False 'Copymodus beenden
WksQ.Activate
End Sub
Gruß Matze

Anzeige
AW: Excel gefilterte Zeilen per Makro kopieren
12.02.2014 16:51:23
Kruse
Klappt leider nicht
Worksheets im Makro hab ich natürlich entsprechend umbenannt
Laufzeitfehler 91
Objektvariable oder with-Blockvariable nicht festgelegt
Debuggen bleibt da stehen
WksQ.AutoFilter.Range.Offset(1).Resize(WksQ.AutoFilter.Range.Rows.Count - 1).SpecialCells( _
xlCellTypeVisible).Copy

AW: Excel gefilterte Zeilen per Makro kopieren
12.02.2014 17:10:19
Matze
Hm,..mal sehen,
das folgende Makro kann nur vom AKTIVEN Blatt aus verwendet werden!
Option Explicit
Sub AutofilterErgebnisKopieren() 'MUSS vom QUELLBLATT ausgeführt werden!!!!!!
ActiveSheet.AutoFilter.Range.Offset(1). _
Resize(ActiveSheet.AutoFilter.Range.Rows.Count - 1). _
SpecialCells(xlCellTypeVisible).copy
With Worksheets("Gefiltert")
.Rows("11:3000").Delete
.Cells(11, 2).PasteSpecial Paste:=xlFormulas
End With
Application.CutCopyMode = False
Sheets("Quelle").Activate
End Sub
Matze

Anzeige
AW: Excel gefilterte Zeilen per Makro kopieren
12.02.2014 17:32:00
Kruse
Leider der gleiche Fehler
kann es sein da die erste gefilterte zeile nicht gefunden wird ?

AW: Excel gefilterte Zeilen per Makro kopieren
12.02.2014 17:35:30
Matze
Hallo,
kannst du die Datei nicht einfach hier einstellen, so sehe ich nicht was bei dir passiert.
Du kannst die auf ein paar wenige Zeile reduzieren, wichtig ist nur wo der Anfang der Filterung beginnt
und eben wo wieder eingefügt werden soll.
Soll später ein Button als Auslöser dienen oder ein Ereignis zB Doppelklick auf eine bestimmte Zelle.
Matze

AW: Excel gefilterte Zeilen per Makro kopieren
12.02.2014 18:30:18
Kruse
Also ich hab jetzt mal eine Beispiel Datei gemacht. Auf dem Blatt "Ergebnis" werden in den farbig markierten Zellen die Filterkriterien eingetragen. In dem Blatt "Daten" sind sämtliche Daten enthalten und werden mit dem Makro nach den Kriterien gefildert. Die gefilterten Daten unterhalb Zeile 8 sollen nun kopiert werden und ins Blatt "Ergebnis" in Zeile 11 kopiert werden.

Die Datei https://www.herber.de/bbs/user/89252.xlsm wurde aus Datenschutzgründen gelöscht


Anzeige
AW: Excel gefilterte Zeilen per Makro kopieren
12.02.2014 19:11:46
Matze
Hallo Kruse,
dein Bereich wo du die Filter hingeschrieben hast, wolltest du aus dem Ergebnisbereich holen?
Nun kleiner Hinweis in der Datei, bei mir läuft das
https://www.herber.de/bbs/user/89253.xlsm
Matze

AW: Excel gefilterte Zeilen per Makro kopieren
12.02.2014 19:58:16
Kruse
Hallo Matze
danke für deinen Vorschlag, aber das ist nicht da was ich mir vorstelle.
deine Frage verstehe ich jetzt nicht .... stehe auf wohl auf der Leitung ?

Ich glaub wir reden hier aneinander vorbei,
12.02.2014 20:20:17
Matze
möchtest du aus dem Blatt ERGEBNIS heraus filtern?
Für was steht die Formel im Blatt Daten in Zelle B2?
=Wenn(B8="";"";B8)
willst du so etwas haben und dann das gefilterte nach Ergebnisblatt kopieren?
https://www.herber.de/bbs/user/89254.xlsm Datei von Beverly
Schreib doch mal endlich was du genau willst , ich Rate hier nur rum und das seit heut Mittag.
Matze

Anzeige
AW: Ich glaub wir reden hier aneinander vorbei,
12.02.2014 21:44:28
Kruse
Hallo Matze
Ok vielleicht hab ich mich nicht verständlich genug ausgedrückt, also noch mal.
Im Blatt "Ergebnis" meiner hier eingestellten Datei werden die Suchkriterien mittels Zellverknüpfung zum Blatt "Daten" übertragen. Aus dem Blatt "Ergebnis" heraus wird ein Makro mittels Button gestartet welches im Blatt"Daten" den Spezialfilter auslöst. Die so gefilterten Daten (Zeilen) stehen dann im Blatt"Daten" unterhalb der Zeile 8, soweit klappt das ja alles wunderbar bei mir.
Nun möchte ich das alle gefilterten Zeilen unterhalb der Zeile 8 im Blatt "Daten" per Makro kopiert werden und im Blatt "Ergebnis" in Zeile 11 eingefügt werden. Das Problem ist, das die gefilterten Zeilen unterhalb der Zeile 8 im Blatt "Daten" immer andere Zeilennummer haben in Abhängigkeit meiner Filterkriterien. Somit kann man ja nicht mit Rows("9:1000").Select Selection.Copy arbeiten. Es muss also ein Befehl her der EINDEUTIG sagt das nur die gefilterten Zeilen unterhalb der Zeile 8 kopiert werden sollen
Ich hoffe das ist jetzt verständlich

Anzeige
AW: Ich glaub wir reden hier aneinander vorbei,
12.02.2014 22:27:36
Kruse
So ich hab noch einmal ein bisschen probiert und ich habe wieder etwas lernen müssen.
Ich bin immer davon ausgegangen das die Befehle
Rows("9:1000").select
Selection.copy
genau diese Zeilen kopiert.
Tatsache ist aber das nur die sichtbaren Zeilen im Bereich 9:1000 kopiert werden, alles was ausgeblendet/gefiltert ist wird nicht kopiert. Somit passiert genau das was ich wollte.
Überraschung Überraschung .... meine Anforderung ist gelöst
Ich bedanke mich bei Allen für die Unterstützung und wünsche noch einen schönen Abend
Gruss
Peter

AW: Ich glaub wir reden hier aneinander vorbei,
13.02.2014 09:23:39
EtoPHG
Hallo Peter,
Was du v.a. noch Lernen solltest, ist der Verzicht auf .Select. Lies dazu diesen Artikel!
Wenn du nun in deinem Beispiel sagen würdest Rows("9:1000").Copy würdest du unabhängig von der Sichtbarkeit der Zeilen alles kopieren. Hingegen schränkt der .Select nur auf die sichtbaren Zellen ein. Dafür gibt es aber (gem. Empfehlung den .Select zu vergessen) die .SpecialCells Methode um aus einer Range z.B. nur den sichtbaren Teil auszuwählen.
Gruess Hansueli

Anzeige
AW: Ich glaub wir reden hier aneinander vorbei,
13.02.2014 11:44:03
Kruse
Hallo Hansueli
danke für den Hinweis und den Link. Ich werde mal ein bischen spielen und mich weiter mit VBA beschäftigen, sodaß meine Makros zukünftig effektiver werden

So iss Recht,...
13.02.2014 11:53:33
Matze
Hallo zusammen,
immer fleißig üben,...wenn ich blos die Zeit immer dazu hätte.
Ich glaub in keiner Datei oder Beispielen war bei mir ein Select dabei, warum
haste das überhaupt umgestellt? Nun, jetzt haste Übungsziele, prima.
Viel Spaß dabei
Matze

309 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige