Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: kopieren von sichtbaren Zellen

kopieren von sichtbaren Zellen
10.02.2009 13:44:00
sichtbaren
Hallo und guten Tag
Ich habe schon mal ein Tread über dieses Thema geöffnet, aber leider ohne Erfolg!
Ich habe folgendes vor.
Ich filtere einen Bereich von B:J in meiner Tabelle2.
Die gefilterten Daten möchte ich nun kopieren und in ein zweites Datenblatt kopieren.
Dazu habe ich auch den macrorecorder überreden können.
Das kam dabei heraus.

Sub Makro6()
' Makro6 Makro
Selection.AutoFilter Field:=9, Criteria1:="1"
Selection.SpecialCells(xlCellTypeVisible).Select
Selection.Copy
Sheets("Tabelle1").Select
Range("A1").Select
ActiveSheet.Paste
End Sub


Leider benötige ich den Bereich B10:J10 nicht, dieser sollte also nicht kopiert werden.
Kopiert werden soll erst ab B11:J11 und alles was danach Sichtbar ist.
Dazu sehe es mit dem Recorder so aus.


Sub Makro7()
' Makro7 Makro
Selection.AutoFilter Field:=9, Criteria1:="1"
Selection.SpecialCells(xlCellTypeVisible).Select
Range("B11:J252").Select
Selection.Copy
Sheets("Tabelle1").Select
Range("A1").Select
ActiveSheet.Paste
End Sub


Nun würde ich gern nur den Bereich der nach dem Filtern zu sehen ist kopieren. mit dem Recorder habe ich es bis J252 selectiert.
Der Bereich kann aber auch einmal bis J1000 oder bis J 15 gehen. Wie kann ich das dem Recorder mitteilen?
Von B11: J-irgendwas?
Kann mir hier bitte jemand helfen?
Ich bin für jede Hilfe dankbar.
Gruß Lisa

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: kopieren von sichtbaren Zellen
10.02.2009 13:57:41
sichtbaren
Hallo Lisa,
so sollte es gehen:

Sub Sichtbar ()
Range("B11:J252").AutoFilter Field:=9, Criteria1:="1"
Range("B11:J252).SpecialCells(xlCellTypeVisible).Copy Destination:=Worksheets("Tabelle1"). _
Range("A1")
End Sub


Gruß Worti

Anzeige
AW: kopieren von sichtbaren Zellen
10.02.2009 14:24:54
sichtbaren
Hallo Worti
Ich habe den VBA- Code in ein CommandButton gelegt, bekomme aber sofort eine Fehlermeldung!
Fehler beim kompilieren!?
Aber so wie ich das sehe, wenn es funktioniert hätte, wären hier die Cellen von zwar b11 aber bis zur makierten kopiert worden. Range("B11:J252).SpecialCells(xlCellTypeVisible).Copy
Der Bereich von b11 ist richtig, aber nach unten hin ist er undefiniert.
Es kann mal bis B1000 oder aber auch blos bis b20 gefiltert werden.
Auch dir lieben Dank für die Bemühungen, aber leider klappt es nicht.
Gibt es vielleicht noch andere LÖsungsansätze?
Gruß Lisa
Anzeige
Da fehlt ein " ...
10.02.2009 14:31:00
RS

Sub Sichtbar ()
Range("B11:J252").AutoFilter Field:=9, Criteria1:="1"
Range("B11:J252").SpecialCells(xlCellTypeVisible).Copy Destination:= _
Worksheets("Tabelle1"). _
Range("A1")
End Sub


Grüsse RS

AW: Da fehlt ein " ...
10.02.2009 14:59:33
lisa
Hallo RS
Danke das klappt.
Nun noch eine Frage hinterher.
Was wenn der Bereich größer als J252 ist.
Wie kann ich den Bereich undefiniert lassen, so dass allein erkannt wird bis wohin die Werte reichen?
Auch dir Danke für die schnelle Hilfe
Gruß Lisa
Wie kann hier noch im VBA-Code gesagt werden, dass immer ab der nächste freien Zeile in Tabelle1 eingefügt werden soll?
Anzeige
AW: Da fehlt ein " ...
10.02.2009 15:11:00
Worti
Hallo Lisa,
sorry für das fehlende ".
versuchs mal so:
Range("B11:J" & Cells(Rows.Count, 2).End(xlUp).Row).AutoFilter Field:=9, Criteria1:="1"
Range("B11:J" & Cells(Rows.Count, 2).End(xlUp).Row).SpecialCells(xlCellTypeVisible).Copy Destination:=Worksheets("Tabelle1").Range("A1")
Gruß Worti
Anzeige
AW: Da fehlt ein " ...
10.02.2009 15:32:15
lisa
Hallo Worti
Du brauchst dich doch nicht zu entschuldigen, schließlich opferst du doch deine Zeit.
Oh ja danke, dass funktioniert gut und auch sehr schnell.
Kannst du evtl. noch einmal nachschauen, ob es möglich ist immer in die nächste frei Zelle der Tab1 zu speichern? oder besser in den angegebenen Pfad in die nächste freie Zeile der Tab1
Ich weiß leider nicht wie ich das einbauen muß!
Range("A" & Cells(Rows.Count, 1).End(xlUp).Row + 1).Select
ChDir "P:\Filter"
Workbooks.Open Filename:="P:\Filter\Mappe2.xls"
Anzeige
AW: Einen Nachtrag (evtl. Worti)
11.02.2009 12:27:00
lisa
Hallo
Ich weiß mann sollte doch warten, aber es ist doch so, dass die offenen Threads nach 3 Tagen ins Archiv gestellt werden und bevor die Frage untergeht, wollte ich sie noch einmal aktualisieren.
Kann mir vieleicht doch noch jemand hierbei helfen?
Kannst du evtl. noch einmal nachschauen, ob es möglich ist immer in die nächste frei Zelle der Tab1 zu speichern? oder besser in den angegebenen Pfad in die nächste freie Zeile der Tab1
Ich weiß leider nicht wie ich das:
Range("A" & Cells(Rows.Count, 1).End(xlUp).Row + 1).Select
ChDir "P:\Filter"
Workbooks.Open Filename:="P:\Filter\Mappe2.xls"
hier einbauen muß!
Range("B11:J" & Cells(Rows.Count, 2).End(xlUp).Row).AutoFilter Field:=9, Criteria1:="1"
Range("B11:J" & Cells(Rows.Count, 2).End(xlUp).Row).SpecialCells(xlCellTypeVisible).Copy Destination:=Worksheets("Tabelle1").Range("A1")
Ich habe es selbst versucht, bekomme aber immer einen Kopilierungs- Fehler
herzlichen Dank für Eure Zeit und Bemühungen!
Gruß Lisa
Anzeige
hat sich alles erledigt oT
12.02.2009 11:10:00
lisa
AW: kopieren von sichtbaren Zellen
10.02.2009 13:58:56
sichtbaren
Hi Lisa
Nur ne Überlegung, also ungetestet.
Versuch mal so:

Sub Makro7()
' Makro7 Makro
Selection.AutoFilter Field:=9, Criteria1:="1"
Selection.SpecialCells(xlCellTypeVisible).Select
Selection.Copy
Sheets("Tabelle1").Select
Range("A1").Select
ActiveSheet.Paste
End Sub


Und lass die Zeile Range("B11:J252").Select weg.
Weil meine Überlegung ist:
Zuerst werden mit Selection.SpecialCells(xlCellTypeVisible).Select nur die sichtbaren Zellen/Zeilen markiert
Im nächsten Schritt (altes Makro) wurden dann alle Zellen von B11 bis J252 markiert - also auch die nicht sichtbaren.
Und wenn man diese 2. Markierung weglässt, werden mit Copy doch nur die zuvor sichtbaren Zellen kopiert, oder?
Hilfts denn, wenn keine bessere Lösung kommt?
(aber ich denk, es gibt ne bessere Lösung, weil man eben zu 99% alle Selects und/oder Activates weglassen kann.
Ciao
Thorsten

Anzeige
AW: kopieren von sichtbaren Zellen
10.02.2009 14:16:00
sichtbaren
Hallo Thorsten
Ich habe mal alle Selects rausgenommen, aber so funktioniert es nicht.
Es werden alle sichtbaren Zellen kopiert, auch die von b1:b 65500 irgendwas.
Lieben Dank für die Bemühungenaber es klappt so nicht.

Private Sub CommandButton3_Click()
' Makro7 Makro
Selection.AutoFilter Field:=9, Criteria1:="1"
Selection.SpecialCells(xlCellTypeVisible).Copy
Sheets("Tabelle1").Paste
End Sub


Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Sichtbare Zellen in Excel kopieren


Schritt-für-Schritt-Anleitung

  1. Filter anwenden: Stelle sicher, dass dein Datenbereich gefiltert ist. Zum Beispiel, wenn du in Excel den Bereich B:J filterst, kannst du dies durch den AutoFilter erreichen.

  2. VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  3. Neues Modul hinzufügen: Klicke auf Einfügen und wähle Modul.

  4. VBA-Code einfügen: Verwende den folgenden Code, um nur die sichtbaren Zellen zu kopieren:

    Sub Sichtbar()
       Range("B11:J" & Cells(Rows.Count, 2).End(xlUp).Row).AutoFilter Field:=9, Criteria1:="1"
       Range("B11:J" & Cells(Rows.Count, 2).End(xlUp).Row).SpecialCells(xlCellTypeVisible).Copy Destination:=Worksheets("Tabelle1").Range("A1")
    End Sub
  5. Makro ausführen: Schließe den VBA-Editor und führe das Makro aus, um die gefilterten, sichtbaren Zellen in das Zielblatt zu kopieren.


Häufige Fehler und Lösungen

  • Fehler: Excel kopiert nicht alle Zellen: Achte darauf, dass du nur sichtbare Zellen kopierst. Verwende den SpecialCells(xlCellTypeVisible)-Befehl, um sicherzustellen, dass nur die gefilterten Daten kopiert werden.

  • Fehler: "Nur gefilterte Daten können in das aktive Blatt kopiert werden": Überprüfe, dass dein Filter korrekt angewendet wurde und dass du den richtigen Bereich ausgewählt hast.


Alternative Methoden

  • Excel-Filter kopieren und einfügen: Du kannst auch manuell die gefilterten Zellen auswählen, kopieren und in ein anderes Blatt einfügen, statt VBA zu verwenden.

  • Sichtbare Zellen kopieren mit Tastenkombinationen: Nach dem Filtern kannst du Strg + C verwenden, um die sichtbaren Zellen zu kopieren, und Strg + V, um sie in das Zielblatt einzufügen.


Praktische Beispiele

  • Beispiel 1: Wenn du einen Bereich von B10 bis J1000 hast und nur die sichtbaren Zellen ab B11 kopieren möchtest:

    Range("B11:J" & Cells(Rows.Count, 2).End(xlUp).Row).SpecialCells(xlCellTypeVisible).Copy Destination:=Worksheets("Tabelle1").Range("A1")
  • Beispiel 2: Um gefilterte Zeilen zu kopieren und in einen anderen Arbeitsbereich einzufügen:

    Sub FilterCopy()
       Selection.AutoFilter Field:=9, Criteria1:="1"
       Selection.SpecialCells(xlCellTypeVisible).Copy Destination:=Worksheets("Tabelle1").Range("A1")
    End Sub

Tipps für Profis

  • Automatisierung: Verwende CommandButton, um das Makro auszulösen, wenn du häufig mit gefilterten Daten arbeitest.

  • Dynamische Bereiche: Setze Cells(Rows.Count, 2).End(xlUp).Row, um den letzten gefüllten Datenpunkt zu finden, was dir hilft, dynamisch zu arbeiten, ohne die Zeilen manuell festzulegen.

  • Fehlervermeidung: Um Compiler-Fehler zu vermeiden, stelle sicher, dass jeder Befehl ordnungsgemäß abgeschlossen ist, z.B. durch das Setzen von Anführungszeichen.


FAQ: Häufige Fragen

1. Wie kann ich nur sichtbare Zellen kopieren?
Verwende den Befehl SpecialCells(xlCellTypeVisible) in deinem VBA-Skript, um nur die sichtbaren, gefilterten Zellen zu kopieren.

2. Was tun, wenn ich mehr als 1000 Zeilen habe?
Nutze die dynamische Zeilenfindung wie Cells(Rows.Count, 2).End(xlUp).Row, um bis zur letzten gefüllten Zeile zu kopieren, unabhängig von der Anzahl der Daten.

3. Wie kann ich in die nächste freie Zeile kopieren?
Setze das Ziel für das Kopieren auf Range("A" & Cells(Rows.Count, 1).End(xlUp).Row + 1), um in die nächste freie Zeile zu speichern.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige