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 bestimmten wert annimmt

zeile kopieren wenn zelle bestimmten wert annimmt
Florian
Guten Tag
Ich habe folgendes Problem:
In Tabelle1 können die Zellen der Spalte G die Werte "Ja", "Nein" und "" aufweisen. Sobald eine Zelle den Wert "Ja" annimmt, soll die zur entsprechenden Zelle zugehörige Zeile in die erste freie Zeile in Tabelle2 kopiert werden (Spalte A setzt einen Wert voraus, dass die Zellen in Tabelle1 Spalte G den Wert "Ja" annehmen können).
Formate sollen beim Kopieren keine übernommen werden. Im anschluss an den Kopiervorgang sollte die kopierte Zeile in Tabelle1 gelöscht werden.
Für Hilfe bedanke ich mich bereits im Voraus.
Gruss Florian
Anzeige
AW: zeile kopieren wenn zelle bestimmten wert annimmt
17.11.2009 11:08:26
Björn
Hallo,
das ist eigentlich nicht schwer, aber ich brauch noch mehr Infos:
- Wann wird kopiert? (Also alles auf Einmak auf Knopfdruck? Wie und wann wird das ausgelöst).
- Welcher Bereich soll durchsucht werden (also Start und Endzeile in Tabelle 1)
- Wirklich ganze Zeile kopieren, oder vielleicht nur bis zu bestimmter Spalte (wenn rechts daneben leer).
- Beim Löschen kpl. Zellen löschen, oder nur Inhalte
Hast Du schon was versucht? Dann lass uns den Code sehen.
Gruß
Björn B.
Anzeige
AW: zeile kopieren wenn zelle bestimmten wert annimmt
17.11.2009 11:22:13
IngGi
Hallo Florian,
versuch's mal so:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng As Range
If Target.Columns.Count > 1 Then Exit Sub
If Target.Column  7 Then Exit Sub
For Each rng In Target
If rng = "ja" Then
rng.EntireRow.Copy
With Sheets("Tabelle2")
.Range("A" & .Cells(.Rows.Count, 1).End(xlUp).Row + 1).PasteSpecial _
Paste:=xlPasteValues
End With
rng.EntireRow.Delete
End If
Next 'rng
Application.CutCopyMode = False
End Sub
Gruß Ingolf
Anzeige
AW: zeile kopieren wenn zelle bestimmten wert annimmt
17.11.2009 12:04:41
Florian
Hallo Ingolf
Besten Dank für deinen Vorschlag. Es funktioniert!
Eine Verständnisfrage
Was geschieht durch:
If Target.Columns.Count > 1 Then Exit Sub
Thanks anyway!
Gruss Florian
AW: zeile kopieren wenn zelle bestimmten wert annimmt
17.11.2009 12:20:31
IngGi
Hallo Florian,
das Makro funktioniert auch, wenn du mehrere Zellen in Spalte G gleichzeitig änderst (durch Einfügen einer einspaltigen Kopie). Wenn die Änderung allerdings mehr als eine Spalte umfasst, steigt das Makro mit dieser Zeile aus und es wird nicht kopiert.
Gruß Ingolf
Anzeige
AW: zeile kopieren wenn zelle bestimmten wert annimmt
18.11.2009 08:21:50
Florian
Hallo Ingolf
Nocheinmal herzlichen Dank für deine Hilfe.
Gruss Florian
AW: zeile kopieren wenn zelle bestimmten wert annimmt
18.11.2009 08:42:26
Florian
Hallo Ingo
Eine Frage habe ich noch:
Gibt es eine Möglichkeit den Code so anzupassen, dass er auch funktioniert, wenn der Wert in Spalte G durch eine Formel entsteht?
Gruss Florian
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Zeile kopieren, wenn Zelle bestimmten Wert annimmt


Schritt-für-Schritt-Anleitung

  1. Öffne die Excel-Datei, in der Du die Zeile kopieren möchtest. Stelle sicher, dass Du zwei Tabellenblätter hast: Tabelle1 und Tabelle2.

  2. Gehe zu Tabelle1 und klicke mit der rechten Maustaste auf den Tab, wähle „Code anzeigen“.

  3. Füge den folgenden VBA-Code ein:

    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rng As Range
    If Target.Columns.Count > 1 Then Exit Sub
    If Target.Column <> 7 Then Exit Sub
    For Each rng In Target
       If rng = "Ja" Then
           rng.EntireRow.Copy
           With Sheets("Tabelle2")
               .Range("A" & .Cells(.Rows.Count, 1).End(xlUp).Row + 1).PasteSpecial _
               Paste:=xlPasteValues
           End With
           rng.EntireRow.Delete
       End If
    Next rng
    Application.CutCopyMode = False
    End Sub
  4. Schließe den VBA-Editor und kehre zu Excel zurück.

  5. Teste den Code, indem Du in Tabelle1 in Spalte G den Wert „Ja“ eingibst. Die gesamte Zeile sollte in Tabelle2 kopiert werden.


Häufige Fehler und Lösungen

  • Fehler: Die Zeile wird nicht kopiert.

    • Lösung: Überprüfe, ob die Änderung in Spalte G (7. Spalte) erfolgt ist. Der Code funktioniert nur für diese Spalte.
  • Fehler: Das Makro funktioniert nicht bei mehreren Zellen gleichzeitig.

    • Lösung: Der Code stoppt, wenn mehr als eine Spalte geändert wird. Achte darauf, nur Spalte G zu ändern.
  • Fehler: Formatierungen werden nicht übernommen.

    • Lösung: Das ist gewollt, da nur die Werte kopiert werden. Wenn Du Formatierungen benötigst, passe den Code an.

Alternative Methoden

  1. Formelbasierte Lösung: Du kannst auch die FILTER- oder WENN-Funktion verwenden, um Daten dynamisch zu filtern. Das erfordert allerdings, dass Du die Daten nicht direkt in Tabelle2 kopierst.

  2. Pivot-Tabellen: Eine Pivot-Tabelle kann helfen, Daten zu aggregieren und zu analysieren, ohne sie zu kopieren.

  3. Manuelles Kopieren: Du kannst die Zeilen auch manuell kopieren, aber dies ist zeitaufwendig und erfordert mehr Aufwand.


Praktische Beispiele

  • Beispiel 1: Wenn Du in Tabelle1 in Spalte G „Ja“ schreibst, wird die gesamte Zeile automatisch in Tabelle2 kopiert.
  • Beispiel 2: Du kannst den Code so anpassen, dass er auch auf andere Werte reagiert, z. B. „Nein“ oder spezifische Wörter, indem Du die Bedingung im Code änderst.
If rng = "Nein" Then
    ' Weitere Logik hier
End If

Tipps für Profis

  • Automatisierung: Du kannst das Makro so anpassen, dass es bei bestimmten Ereignissen (z. B. beim Öffnen der Datei) automatisch ausgeführt wird.
  • Fehlerbehandlung: Implementiere eine Fehlerbehandlung im VBA-Code, um unerwartete Fehler abzufangen.
  • Dokumentation: Halte den Code gut dokumentiert, damit Du und andere Benutzer ihn später verstehen können.

FAQ: Häufige Fragen

1. Kann ich den Code anpassen, um auch Zeilen zu kopieren, wenn ein Wert durch eine Formel entsteht?
Ja, Du müsstest den Code so anpassen, dass er die Berechnungsergebnisse überwacht, anstatt nur die direkten Eingaben.

2. Wie kann ich den Code ändern, um nur bestimmte Spalten zu kopieren?
Ändere den Code so, dass er nur die Werte der gewünschten Spalten kopiert, indem Du rng.Cells(1, n) für die n-te Spalte verwendest.

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