Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Werte aus Spalten kopieren wenn Zelle gefüllt ist

Werte aus Spalten kopieren wenn Zelle gefüllt ist
11.12.2017 14:44:34
Jochen
Hallo Excel Forum,
ich habe folgendes Problem:
Ich bekomme eine Excel Tabelle mit Bestelldaten.
In dieser Tabelle sind alle Artikelnummern in Spalte A (A12:A95)gelistet und in Spalte B (B12:B95) stehen die Bestellmengen je Artikelnummer.
Ich möchte aus einer zweiten Datei raus ein Makro anstoßen, welches mir nur die Artikelnummern kopiert die eine Bestellmenge haben. Es soll die Artikelnummer (Spalte A) und die dazugehörige Menge (Spalte B) in ein Tabellenblatt "Datentransfer" (ab Zelle A7 / B7) der zweiten Datei kopiert werden.
Die Excel Tabelle mit den Bestelldaten liegt immer im gleichen Verzeichnis, ebenso die zweite Datei.
Vielen Dank schon mal für Eure Unterstützung!!
Viele Grüße
Jochen
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Werte aus Spalten kopieren wenn Zelle gefüllt ist
11.12.2017 15:19:45
Piet
Hallo Jochen
Probier bitte den unteren Code aus. In der Const Anweisung "ExtWb" must du deinen Workbook Namen eintragen
in der sich die Tabelle Datentransfer befindet. Bei mir "Mappe2". Danach sollte es klappen.
mfg Piet
Option Explicit         '11.12.2017   Piet für Herber Forum
Const ExtWb = "Mappe2"        'Name der Mappe mit Tabelle "Datentransfer"
Const Ziel = "Datentransfer"  'Ziel Tabelle "Datentransfer"
Const Quelle = "Tabelle1"     'Name der Quell Tabelle A12:A95
Sub Externe_Tabelle_Kopieren()
Dim AC As Range, z As Integer
z = 7  '1.Zeile in Datentransfer
'zuerst Ext.Mappe Datentransfer Bereich löschen
ExtWb.Worksheets(Ziel).Range("A7:B95").ClearContents
'Schleife zum auflisten des Bereichs A12:A95
For Each AC In Worksheets(Quelle).Range("A12:A95")
If AC.Offset(0, 1) > 0 Then
ExtWb.Worksheets(Ziel).Cells(z, 1) = AC.Cells(1, 1)
ExtWb.Worksheets(Ziel).Cells(z, 2) = AC.Cells(1, 2)
z = z + 1  'naechste Zeile
End If
Next AC
End Sub

Anzeige
Werte aus Spalten kopieren wenn Zelle gefüllt ist
11.12.2017 15:50:50
Jochen
Hallo Piet,
erst mal vielen Dank für Deine schnelle Hilfe!!
Kann es sein, dass man den Code aus der Datei mit Bestelldaten aufrufen muss?
Ich bekomme den Fehler "Fehler beim Kompilieren - ungültiger Bezeichner" bezogen auf ExtWb!
Ich befinde mich ja in der Datei mit dem Datentransfer und will von dort aus das Makro starten.
Gruß
Jochen
Anzeige
AW: Werte aus Spalten kopieren wenn Zelle gefüllt ist
12.12.2017 09:55:37
Piet
Hallo Jochen,
kein Thema, drehen wir den Spiess einfach um. Probier mal das neue Makro.
Hier must du für "Mappe2" deine Datei aus der die Daten geholt werden angeben.
Schauen wir mal ob es so klappt ...
Wenn es klappt bitte Thread schliessen, KontrollBox nicht aktivieren.
mfg Piet
Option Explicit         '11.12.2017   Piet für Herber Forum
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
'zuerst Datentransfer Bereich löschen
.Worksheets(Ziel).Range("A7:B95").ClearContents
'Schleife zum auflisten des Bereichs A12:A95
For Each AC In 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  'naechste Zeile
End If
Next AC
End With
End Sub

Anzeige
Werte aus Spalten kopieren wenn Zelle gefüllt ist
12.12.2017 10:32:43
Jochen
Hallo Piet,
das Problem bleibt das gleiche.
Wenn ich den Code im Einzelschritt ausführen will, meckert er an "Fehler beim Kompilieren: ungültiger Bezeichner!" und ExtWb ist hinterlegt.
Beide Dateien liegen momentan im gleichen Verzeichnis und sind beide geöffnet.
Gruß
Jochen
Anzeige
Werte aus Spalten kopieren wenn Zelle gefüllt ist
12.12.2017 14:41:50
Jochen
Hallo Piet,
es funzt jetzt.
Vielen Dank für Deine Hilfe!!!
AW: Werte aus Spalten kopieren wenn Zelle gefüllt ist
12.12.2017 18:19:10
Piet
Hallo Jochen
deine Beispieldatei zurück mit einem Erstversuch die Aufgabe zu lösen.
Ich bin nicht sicher ob ich alles richtig verstanden habe, und ob dir mein Entwurf gefaellt. Wenn nicht aendern wir ihn.
Ich habe mich entschlössen für die Auswahl eine Spalte direkt in Daten einzufügen, und dort nur angegeben welchen Freitext oder Teiltext das Makro aus der Tabelle Freitext holen soll. War einfacher zu programmieren. Wenn das nicht ok ist aendern wir es.
Ich warte erstmal auf deine Rückmeldung.
https://www.herber.de/bbs/user/118294.xlsm
Anzeige
AW: Werte aus Spalten kopieren wenn Zelle gefüllt ist
12.12.2017 18:30:56
Piet
Hallo Jochen
Sorry, Verwechslung, mein Fehler!! - Die Beispieldatei gehört einen Thred unter deinem!
mfg Piet
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

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:

  1. Öffne die Excel-Datei, in der du die Daten kopieren möchtest.
  2. Drücke ALT + F11, um den VBA-Editor zu öffnen.
  3. Füge ein neues Modul ein:
    • Klicke mit der rechten Maustaste auf "VBAProject (DeineDatei.xlsx)".
    • Wähle Einfügen > Modul.
  4. 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
  1. Passe den Namen der Arbeitsmappe (Const ExtWb) an, in der die Daten liegen.
  2. 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):

  1. Markiere eine Zelle, in der die gefilterten Daten angezeigt werden sollen.
  2. 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.

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