Werte aus Spalten kopieren, wenn Zelle gefüllt ist
Schritt-für-Schritt-Anleitung
Um die Artikelnummern und Bestellmengen aus einer Excel-Datei zu kopieren, wenn die Bestellmengen gefüllt sind, kannst du folgendes VBA-Makro verwenden:
- Öffne die Excel-Datei, in der du die Daten kopieren möchtest.
- Drücke
ALT + F11
, um den VBA-Editor zu öffnen.
- Füge ein neues Modul ein:
- Klicke mit der rechten Maustaste auf "VBAProject (DeineDatei.xlsx)".
- Wähle
Einfügen
> Modul
.
- Kopiere den folgenden Code in das Modul:
Option Explicit
Const ExtWb = "Mappe2" ' Name der Mappe aus der kopiert wird
Const Ziel = "Datentransfer" ' Ziel Tabelle "Datentransfer"
Const Quelle = "Tabelle1" ' Name der Quell Tabelle A12:A95
Sub Externe_Daten_Kopieren()
Dim AC As Range, z As Integer
z = 7 '1. Zeile in Datentransfer
With ThisWorkbook
.Worksheets(Ziel).Range("A7:B95").ClearContents
For Each AC In Workbooks(ExtWb).Worksheets(Quelle).Range("A12:A95")
If AC.Offset(0, 1) > 0 Then
.Worksheets(Ziel).Cells(z, 1) = AC.Cells(1, 1)
.Worksheets(Ziel).Cells(z, 2) = AC.Cells(1, 2)
z = z + 1 ' nächste Zeile
End If
Next AC
End With
End Sub
- Passe den Namen der Arbeitsmappe (Const ExtWb) an, in der die Daten liegen.
- Schließe den VBA-Editor und führe das Makro aus.
Häufige Fehler und Lösungen
-
Fehler: "ungültiger Bezeichner" für ExtWb
Stelle sicher, dass der Name der externen Datei korrekt ist und die Datei geöffnet ist.
-
Fehler beim Ausführen des Makros
Überprüfe, ob sich beide Dateien im gleichen Verzeichnis befinden und dass du die richtigen Blätter angegeben hast.
-
Keine Daten werden kopiert
Vergewissere dich, dass die Zellen in Spalte B tatsächlich Werte enthalten, die größer als 0 sind.
Alternative Methoden
Falls du kein VBA verwenden möchtest, kannst du auch die FILTER-Funktion in Excel nutzen (verfügbar in Excel 365):
- Markiere eine Zelle, in der die gefilterten Daten angezeigt werden sollen.
- Verwende die folgende Formel:
=FILTER(A12:B95, B12:B95>0)
Dies wird automatisch alle Artikelnummern und Bestellmengen anzeigen, bei denen die Bestellmengen größer als 0 sind.
Praktische Beispiele
Angenommen, du hast folgende Daten in deiner Tabelle:
Artikelnummer |
Bestellmenge |
12345 |
10 |
67890 |
0 |
54321 |
5 |
Nach der Ausführung des Makros sollten die Daten im Datentransfer-Tabellenblatt so aussehen:
Artikelnummer |
Bestellmenge |
12345 |
10 |
54321 |
5 |
Tipps für Profis
- Verwende das Debugging: Wenn dein Makro nicht funktioniert, setze Haltepunkte im VBA-Editor, um den Code Schritt für Schritt zu durchlaufen.
- Dokumentiere deinen Code: Füge Kommentare hinzu, um die Funktionsweise deines Makros zu erklären. Dies hilft dir und anderen, den Code später besser zu verstehen.
- Optimiere die Leistung: Wenn du mit großen Datenmengen arbeitest, kannst du
Application.ScreenUpdating = False
vor dem Kopieren und Application.ScreenUpdating = True
danach verwenden, um die Ausführungsgeschwindigkeit zu erhöhen.
FAQ: Häufige Fragen
1. Muss ich die Dateien immer manuell öffnen?
Ja, beide Dateien müssen geöffnet sein, damit das Makro auf die Daten zugreifen kann.
2. Kann ich das Makro anpassen, um mehr Spalten zu kopieren?
Ja, passe einfach den Code an, um zusätzliche Spalten zu berücksichtigen, indem du die Range entsprechend erweiterst.
3. Funktioniert das Makro in allen Excel-Versionen?
Das Makro sollte in den meisten modernen Excel-Versionen funktionieren, die VBA unterstützen. Achte darauf, dass du die richtige Version nutzt.