Schnellere Lösungen zum Kopieren von Daten in Excel
Schritt-für-Schritt-Anleitung
-
Tabellenblätter vorbereiten: Stelle sicher, dass Du zwei Tabellenblätter hast: "Einlesen" (mit aktuellen Daten) und "Anlagen" (wo die Daten kopiert werden sollen).
-
VBA-Editor öffnen: Drücke ALT + F11
, um den VBA-Editor zu öffnen.
-
Neues Modul erstellen: Klicke im Menü auf "Einfügen" und wähle "Modul".
-
Code einfügen: Füge den folgenden Code in das Modul ein, um die Daten von "Einlesen" nach "Anlagen" zu kopieren:
Sub einlesen_km()
Dim Z As Integer
Dim Zz As Integer
Dim i As Integer
Dim ii As Integer
Z = Sheets("Einlesen").UsedRange.Rows.Count
Zz = Sheets("Anlagen").UsedRange.Rows.Count
Application.ScreenUpdating = False
For i = 6 To Z
For ii = 7 To Zz
If Sheets("Anlagen").Cells(ii, 2) = Sheets("Einlesen").Cells(i, 1) Then
Sheets("Anlagen").Cells(ii, 11) = Sheets("Einlesen").Cells(i, 2)
Sheets("Anlagen").Cells(ii, 12) = Sheets("Einlesen").Cells(i, 3)
End If
Next ii
Next i
Application.ScreenUpdating = True
End Sub
-
Makro ausführen: Schließe den VBA-Editor und führe das Makro über ALT + F8
aus.
Häufige Fehler und Lösungen
Alternative Methoden
Eine alternative Methode zur Datenübertragung ist die Verwendung der SVerweis-Funktion. Wenn Du in "Anlagen" die Wagennummern mehrfach hast, kannst Du die Formel in VBA verwenden:
With Sheets("Anlagen").Range("K7:L" & Zz)
.Columns(1).FormulaR1C1 = "=IfError(VLookUp(RC2,Einlesen!R6C1:R" & Z & "C3,2,0),"""")"
.Columns(2).FormulaR1C1 = "=IfError(VLookUp(RC2,Einlesen!R6C1:R" & Z & "C3,3,0),"""")"
.Formula = .Value
End With
Praktische Beispiele
Wenn Du eine zusätzliche Bedingung hinzufügen möchtest, beispielsweise dass in Spalte C ein "x" stehen muss, kannst Du die Formel wie folgt erweitern:
.Columns(1).FormulaR1C1 = "=IF(RC3=""x"",IfError(VLookUp(RC2,Einlesen!R6C1:R" & Z & "C3,2,0),""""),"""")"
Damit wird nur kopiert, wenn die Bedingung erfüllt ist.
Tipps für Profis
- Verwende Autofilter: Setze den Autofilter in der relevanten Spalte auf "x", bevor Du die Formeln einfügst. So wird die Formel nur in die sichtbaren Zellen eingetragen.
- Ersetze Formeln durch Werte: Wenn Du die Ergebnisse der Formeln in Werte umwandeln möchtest, kannst Du die Zellen kopieren und dann mit "Inhalte einfügen" -> "Werte" einfügen.
FAQ: Häufige Fragen
1. Wie kann ich die Laufzeit des Makros weiter reduzieren?
Verwende zusätzlich Application.Calculation = xlCalculationManual
, um die automatische Neuberechnung zu deaktivieren, während das Makro läuft.
2. Was mache ich, wenn ich die Daten aus mehreren Tabellenblättern kopieren möchte?
Du kannst die Schleifen anpassen, um durch alle benötigten Tabellenblätter zu iterieren und die Daten entsprechend zu kopieren.