Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Zellinhalt suchen, ganze Zeile kopieren

Forumthread: Zellinhalt suchen, ganze Zeile kopieren

Zellinhalt suchen, ganze Zeile kopieren
28.08.2002 22:23:27
Peter
Hallo Forum,
ich will nach bestimmten Zellinhalten suchen und dann die ganze Zeile in ein anderes Blatt kopieren. In der Recherche fand ich den passenden Code.
Die Überschriftenzeile und die erste "SuchZeile" wird ins neue Blatt kopiert, dann hängt sich Excel auf. Warum nur ?.
Dank für jeden Hinweis.
Peter

Sub ArtikelSuchenKopieren()
'Sucht einen Begriff in einem bestimmten Blatt,
'und kopiert die Ergebnisse in ein anderes Blatt

Static Suchbegriff As String
Dim Zelle, ErsteAdresse, ArbeitsblattDaten, ArbeitsblattErgebnis As String
Dim LetzteZelle, intCount As Integer
Application.ScreenUpdating = False

ArbeitsblattDaten = "Tabelle1" 'Tabelle, in der gesucht wird
ArbeitsblattErgebnis = "Tabelle2" 'Tabelle, in der die Ergebnisse stehen

Sheets(ArbeitsblattErgebnis).Cells.Clear 'Alte Tabelleninhalte löschen
Suchbegriff = InputBox(Prompt:="Bitte Suchbegriff eingeben:", Default:=Suchbegriff)
If Suchbegriff = "" Then Exit Sub

Sheets(ArbeitsblattDaten).Activate
Rows(1).Copy 'Überschriftenzeile kopieren ...
Sheets(ArbeitsblattErgebnis).Select
Range("a1").Select
ActiveSheet.Paste '... und in dem anderen Tabellenblatt einfügen

Sheets(ArbeitsblattDaten).Activate
With ActiveSheet.UsedRange
Set Zelle = .Find(Suchbegriff, LookIn:=xlValues)
If Not Zelle Is Nothing Then
ErsteAdresse = Zelle.Address
Do
LetzteZelle = Sheets(ArbeitsblattErgebnis).Cells(Cells.Rows.Count, 1).End(xlUp).Row
Rows(Zelle.Row).Copy

Sheets(ArbeitsblattErgebnis).Select
Cells(LetzteZelle + 1, 1).Select
ActiveSheet.Paste
Sheets(ArbeitsblattDaten).Activate
Set Zelle = .FindNext(Zelle)
Loop While Not Zelle Is Nothing And Zelle.Address <> ErsteAdresse
End If

Sheets(ArbeitsblattErgebnis).Select
Range("a1").Select
End With

Application.CutCopyMode = xlCopy
Application.ScreenUpdating = True

End Sub

Anzeige

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

Betreff
Datum
Anwender
Anzeige
Re: Zellinhalt suchen, ganze Zeile kopieren
29.08.2002 01:43:45
L.Vira
Leider ist der Code alles andere als gut, das Ganze geht ohne ein einziges Select oder activate. Nur mal ein Beispiel für das Kopieren der Überschriften:

Sheets(ArbeitsblattDaten).Rows(1).Copy destination:= _
Sheets(ArbeitsblattErgebnis).[a1]

Re: Zellinhalt suchen, ganze Zeile kopieren
29.08.2002 02:10:05
Charlie
Hallo Peter,

ich schließe mich der Meinung von L.Vira vollinhaltlich an.
Weniger Selecten und Activaten macht den Code 1) übersichtlicher, 2) schneller und 3) weniger fehleranfällgi. Durch das ständige Wechseln zwischen Quell- und Zieldatenblatt verliert man zu schnell die Übersicht und dann passieren Fehler beim Ansprechen der Cells(...). Einmal mit Punkt davor, einmal ohne Punkt davor, je nachdem, welches Blatt aktiv und welches Blatt angesprochen werden soll. Ich habe mir daher erlaubt, am Code herum zu schnipseln. Hier eine Lösung, die nur durch Referenzierung alles reibungslos erledigt:

Viel Erfolg,
Charlie

Anzeige
Re: Zellinhalt suchen, ganze Zeile kopieren
29.08.2002 07:34:09
Es klappt !
Danke für die schnelle Lösung.
;

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

Infobox / Tutorial

Zellinhalt suchen und ganze Zeile kopieren in Excel


Schritt-für-Schritt-Anleitung

Um in Excel einen bestimmten Zellinhalt zu suchen und die gesamte Zeile in ein anderes Blatt zu kopieren, kannst Du den folgenden VBA-Code verwenden:

Sub ArtikelSuchenKopieren()
    Static Suchbegriff As String
    Dim Zelle, ErsteAdresse, ArbeitsblattDaten, ArbeitsblattErgebnis As String
    Dim LetzteZelle As Long

    Application.ScreenUpdating = False

    ArbeitsblattDaten = "Tabelle1" ' Tabelle, in der gesucht wird
    ArbeitsblattErgebnis = "Tabelle2" ' Tabelle, in der die Ergebnisse stehen

    Sheets(ArbeitsblattErgebnis).Cells.Clear ' Alte Tabelleninhalte löschen
    Suchbegriff = InputBox(Prompt:="Bitte Suchbegriff eingeben:", Default:=Suchbegriff)
    If Suchbegriff = "" Then Exit Sub

    With Sheets(ArbeitsblattDaten).UsedRange
        Set Zelle = .Find(Suchbegriff, LookIn:=xlValues)
        If Not Zelle Is Nothing Then
            ErsteAdresse = Zelle.Address
            Do
                LetzteZelle = Sheets(ArbeitsblattErgebnis).Cells(Rows.Count, 1).End(xlUp).Row
                Rows(Zelle.Row).Copy Destination:=Sheets(ArbeitsblattErgebnis).Cells(LetzteZelle + 1, 1)
                Set Zelle = .FindNext(Zelle)
            Loop While Not Zelle Is Nothing And Zelle.Address <> ErsteAdresse
        End If
    End With

    Application.ScreenUpdating = True
End Sub

Dieser Code sucht nach einem Begriff in „Tabelle1“ und kopiert die gesamte Zeile in „Tabelle2“. Achte darauf, dass Du die Namen der Tabellenblätter entsprechend Deinen Anforderungen anpasst.


Häufige Fehler und Lösungen

  1. Excel hängt sich auf

    • Mögliche Ursache: Zu viele Select und Activate Befehle im Code. Versuche, diese durch direkte Referenzierung zu ersetzen, um die Performance und Stabilität zu verbessern.
  2. Suchbegriff wird nicht gefunden

    • Stelle sicher, dass der Suchbegriff korrekt eingegeben wurde und in den gesuchten Zellen tatsächlich vorhanden ist.
  3. Kopierte Zeilen sind leer

    • Überprüfe, ob die Zeilen, die Du kopieren möchtest, wirklich Daten enthalten und dass der Suchbegriff korrekt ist.

Alternative Methoden

Du kannst auch die Funktion "Suchen und Ersetzen" in Excel verwenden, um Zellen mit bestimmten Inhalten zu finden und dann manuell die entsprechenden Zeilen zu kopieren. Dies kann in einfacheren Fällen schneller sein.

Für eine umfassendere Lösung, insbesondere bei großen Datenmengen, empfiehlt sich die Verwendung von VBA, wie in der obigen Anleitung beschrieben.


Praktische Beispiele

  1. Nur Zeilen mit bestimmten Inhalt kopieren

    • Angenommen, Du möchtest nur Zeilen kopieren, die das Wort „Produkt“ enthalten. Der VBA-Code kann so angepasst werden, dass er nur diese Zeilen verarbeitet.
  2. Ganze Spalte kopieren

    • Um eine gesamte Spalte zu kopieren, kannst Du statt Rows(Zelle.Row) einfach Columns(Zelle.Column) verwenden.

Tipps für Profis

  • Nutze die Application.ScreenUpdating = False Anweisung, um die Ausführungsgeschwindigkeit zu erhöhen und Flackern zu vermeiden.
  • Verwende Option Explicit am Anfang Deines Codes, um sicherzustellen, dass alle Variablen deklariert sind, was zu weniger Fehlern führt.
  • Teste Deinen Code schrittweise, um sicherzustellen, dass er wie gewünscht funktioniert.

FAQ: Häufige Fragen

1. Wie kann ich nur bestimmte Zelleninhalte kopieren? Um nur bestimmte Zelleninhalte zu kopieren, kannst Du die If-Bedingung im VBA-Code erweitern, um spezifische Kriterien festzulegen.

2. Welche Excel-Version benötige ich für VBA? VBA ist in Excel ab der Version 97 verfügbar und sollte in allen aktuellen Versionen wie Excel 2010, 2013, 2016 und 2019 funktionieren.

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