Kopieren von Zellen in Excel, nur wenn nicht leer
Schritt-für-Schritt-Anleitung
Um in Excel nur die Zellen zu kopieren, die nicht leer sind, kannst du den folgenden VBA-Code verwenden. Dieser Code überprüft jede Zelle in der angegebenen Spalte und kopiert nur die nicht leeren Zellen.
- Öffne dein Excel-Dokument und drücke
ALT + F11
, um den VBA-Editor zu öffnen.
- Klicke auf
Einfügen
und dann auf Modul
, um ein neues Modul zu erstellen.
- Füge den folgenden Code in das Modul ein:
Sub KopiereNurNichtLeere()
Dim rng As Range
Dim wsSource As Worksheet
Dim wsDest As Worksheet
Dim rowDest As Long
Set wsSource = ThisWorkbook.Sheets("RL70")
Set wsDest = ThisWorkbook.Sheets("Entwicklung Gesamtrückstand")
rowDest = 3 ' Startzeile im Zielblatt
For Each rng In wsSource.Range("S3:S20000")
If rng.Value <> "" Then ' Überprüfen, ob die Zelle nicht leer ist
wsDest.Cells(rowDest, 19).Value = rng.Value ' Kopiere den Wert
rowDest = rowDest + 1 ' Nächste Zeile im Zielblatt
End If
Next rng
End Sub
- Schließe den VBA-Editor und gehe zurück zu Excel.
- Führe das Makro aus, um die nicht leeren Zellen zu kopieren.
Häufige Fehler und Lösungen
-
Fehler: Das Makro kopiert trotzdem leere Zellen.
Lösung: Stelle sicher, dass die Bedingung If rng.Value <> "" Then
korrekt implementiert ist.
-
Fehler: Es wird nur eine Zelle kopiert.
Lösung: Überprüfe den Bereich, den du in For Each rng In wsSource.Range("S3:S20000")
angegeben hast.
Alternative Methoden
Eine alternative Methode, um nur nicht leere Zellen zu kopieren, ist die Verwendung des Autofilters:
- Wende den Autofilter auf die Spalte an.
- Filtere nach "nicht leer".
- Kopiere die gefilterten Daten in die Ziel-Tabelle.
Beachte, dass diese Methode bei verbundenen Zellen möglicherweise nicht funktioniert und daher weniger geeignet ist, wenn du viele verbundene Zellen hast.
Praktische Beispiele
Angenommen, du hast in der Spalte S Daten, die zum Teil leer sind. Mit dem oben genannten VBA-Code wird nur der Inhalt der Zellen kopiert, die tatsächlich Daten enthalten. Dies ist besonders nützlich, wenn du mit großen Datenmengen arbeitest, wie in Elmar's Fall, wo es um über 20.000 Zeilen geht.
Tipps für Profis
- Um die Geschwindigkeit des Makros zu erhöhen, kannst du die Bildschirmaktualisierung während der Ausführung deaktivieren:
Application.ScreenUpdating = False
Füge dies am Anfang deines Makros ein und setze es am Ende wieder auf True
.
- Verwende
Application.Calculation = xlCalculationManual
, um die Berechnung während der Ausführung des Makros zu deaktivieren und dann wieder zu aktivieren.
FAQ: Häufige Fragen
1. Wie kann ich die Zellen in eine andere Spalte kopieren?
Du kannst die Zielspalte einfach anpassen, indem du die Zahl in wsDest.Cells(rowDest, 19)
änderst.
2. Was passiert mit den leeren Zellen?
Leere Zellen werden übersprungen und nicht in das Zielblatt kopiert, was die Effizienz des Makros verbessert.
3. Ist dieser Code mit allen Excel-Versionen kompatibel?
Ja, dieser VBA-Code sollte in den meisten modernen Excel-Versionen funktionieren.