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

Forumthread: Zeile kopieren wenn zelle wert "xyz" enthält

Zeile kopieren wenn zelle wert "xyz" enthält
19.05.2006 16:03:31
nontacky
Hallo,
ich habe ein Problem mit einer Makroerstellung. Habe das Archiv schon durchsucht und auch einiges ähnliches gefunden - aber leider sind meine VBA Kenntnisse zu schlecht um daraus genau das zu basteln was ich haben möchte.
Ich habe eine Tabelle mit 5 Spalten & 50 Zeilen die Daten enthalten (B4 - F54). In Spalte C wird ein Status eingetragen. Sobald dieser auf "done" steht möchte ich, dass bei ausführen des Makros der Eintrag + die umliegenden 4 Zellen (also die Zeile meiner Liste kopiert werden und an einer anderen Stelle der Tabelle (im Spalte AA ab Zeile 4) kopiert werden (in die nächte freie Zelle von AA4 aus gesehen). Das soll als Schleife laufen, so dass ALLE Einträge aus meiner Liste die auf "done" stehen untereinander in die Abalge ab Spalte AA gelegt werden. Danach sollten alle Einträge die in der B4-F54 Tabelle stehen und auf "done" gesetzt sind gelöscht werden.
Ich hoffe das ist überhaupt machbar.
Vielen Dank für die Hilfe
Nontacky
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Zeile kopieren wenn zelle wert "xyz" enthält
19.05.2006 16:13:05
Reinhard
Hi nontacky,
Option Explicit
Sub tt()
Dim n As Integer, pos As Integer
pos = 4
For n = 4 To 54
If Cells(n, 3) = done Then
Cells(n, 2).Copy Destination:=Range("AA" & pos)
Range(Cells(n, 4), Cells(n, 6)).Copy Destination:=Range("AA" & pos)
Range(Cells(n, 2), Cells(n, 6)).ClearContents
End If
Next n
End Sub

Gruß
Reinhard
ps: Ich freue mich über eine Rückmeldung ob diese Antwort hilfreich war oder nicht..
Anzeige
AW: Zeile kopieren wenn zelle wert "xyz" enthält
19.05.2006 16:37:34
nontacky
Hallo Reinhard,
vielen Dank für die Hilfe. Es klappt fast alles - eine Kleinigkeit noch. Die Daten werden 1a in die Spalte AA kopiert - allerdings nicht untereinander sondern immer in die gleiche Zeile (Zeile 4). Da die Einträge aus meiner Liste in Spalte AA abgelegt werden sollen ist es wichtig, dass die Einträge untereinander abgelegt werden = Anfangen in AA4 .. wenn AA4 belegt ist dann AA5 usw. usf.
Wäre super wenn Du mir da noch mal helfen könntest.
Vielen Dank,
Nontacky
Anzeige
sorry, mein Fehler
19.05.2006 21:01:42
Reinhard
Hi nontacky,
hatte was im Code vergessen.
Option Explicit
Sub tt()
Dim n As Integer, pos As Integer
pos = 4
For n = 4 To 54
If Cells(n, 3) = "done" Then
Cells(n, 2).Copy Destination:=Range("AA" & pos)
Range(Cells(n, 4), Cells(n, 6)).Copy Destination:=Range("AA" & pos)
Range(Cells(n, 2), Cells(n, 6)).ClearContents
pos=pos+1
End If
Next n
End Sub

Gruß
Reinhard
ps: Ich freue mich über eine Rückmeldung ob diese Antwort hilfreich war oder nicht..
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Zeile kopieren, wenn Zelle den Wert "done" enthält


Schritt-für-Schritt-Anleitung

Um eine Zeile in Excel zu kopieren, wenn eine Zelle den Wert "done" enthält, kannst du ein einfaches VBA-Makro nutzen. Folge diesen Schritten:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Klicke auf Einfügen > Modul, um ein neues Modul zu erstellen.
  3. Kopiere den folgenden VBA-Code in das Modul:
Option Explicit
Sub tt()
    Dim n As Integer, pos As Integer
    pos = 4 ' Startposition in Spalte AA
    For n = 4 To 54 ' Gehe durch die Zeilen 4 bis 54
        If Cells(n, 3) = "done" Then ' Überprüfe, ob in Spalte C "done" steht
            Cells(n, 2).Copy Destination:=Range("AA" & pos) ' Kopiere Spalte B
            Range(Cells(n, 4), Cells(n, 6)).Copy Destination:=Range("AA" & pos) ' Kopiere Spalten D bis F
            Range(Cells(n, 2), Cells(n, 6)).ClearContents ' Lösche die Originaldaten
            pos = pos + 1 ' Erhöhe die Zielposition für die nächste Zeile
        End If
    Next n
End Sub
  1. Schließe den VBA-Editor und kehre zu Excel zurück.
  2. Führe das Makro aus, indem du ALT + F8 drückst, das Makro auswählst und auf Ausführen klickst.

Häufige Fehler und Lösungen

  • Fehler: Die kopierten Daten erscheinen nicht untereinander.

    • Lösung: Stelle sicher, dass in deinem Code die Variable pos nach dem Kopieren erhöht wird, wie im Beispiel oben gezeigt.
  • Fehler: Der Wert "done" wird nicht erkannt.

    • Lösung: Achte darauf, dass "done" als String in Anführungszeichen geschrieben wird: If Cells(n, 3) = "done" Then.

Alternative Methoden

Wenn du kein Makro verwenden möchtest, kannst du auch die Filterfunktion in Excel nutzen:

  1. Markiere deine Daten und gehe zu Daten > Filter.
  2. Aktiviere den Filter für Spalte C und wähle nur "done" aus.
  3. Kopiere die gefilterten Zeilen manuell in die gewünschte Zielzelle.

Praktische Beispiele

Angenommen, du hast folgende Daten:

A B C D E F
1 Name Status Wert1 Wert2 Wert3
2 Peter done 100 200 300
3 Anna pending 150 250 350
4 Max done 200 300 400

Nach dem Ausführen des Makros wird Spalte AA so aussehen:

AA AB AC
Name Wert1 Wert2
Peter 100 200
Max 200 300

Tipps für Profis

  • Verwende Option Explicit, um sicherzustellen, dass alle Variablen deklariert sind. Dies hilft, Fehler zu vermeiden.
  • Du kannst das Makro anpassen, um zusätzliche Kriterien zu verwenden, wenn du mehr als nur den Status "done" überprüfen möchtest.
  • Speichere deine Datei als .xlsm, um die Makros zu erhalten.

FAQ: Häufige Fragen

1. Wie kann ich das Makro anpassen, um nach einem anderen Wert zu suchen?
Ändere einfach den Wert in der Bedingung: If Cells(n, 3) = "neuerWert" Then.

2. Funktioniert das Makro in allen Excel-Versionen?
Ja, das Makro sollte in den meisten modernen Excel-Versionen (ab Excel 2007) funktionieren. Achte darauf, dass die Makros aktiviert sind.

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