Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA: zwei Sheets vergleichen und Daten kopieren

Forumthread: VBA: zwei Sheets vergleichen und Daten kopieren

VBA: zwei Sheets vergleichen und Daten kopieren
05.07.2016 10:39:52
jam
Hallo zusammen,
ich hoffe, ihr könnt mir helfen.
Ich benötige für folgendes Vorhaben eine vba Lösung:
Es gibt in einer Datei zwei Tabellenblätter ( "Altdaten" und "Neudaten"), die ich gerne vergleichen möchte, dabei sollen die neuen Datensätze aus "Neudaten", die es noch nicht gibt ins Blatt "Altdaten" kopiert werden.
Für den Vergleich wird die Spalte B genommen ("Inventarnummer"). Gibt es also die Inventarnummer schon im Blatt "Altdaten" darf der ganze Datensatz nicht editiert bzw. kopiert werden. Gibt es die Inventarnr noch nicht, dann soll der komplette Datensatz ( bestehend aus Spalte A bis L ) ins Blatt "Neudaten" kopiert werden.
Als Bonbon wäre es schön, wenn die neuen Datensätze im Blatt "Altdaten" mit dem Vermerk "Neu" gekennzeichnet werden
( in Spalte M).
Vielen Dank für eure Unterstützung. Ich wäre für jeden Lösungsansatz wirklich sehr dankbar.
Gruß

Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Doppelt - owT
05.07.2016 10:52:37
Bernd
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Zwei Sheets vergleichen und Daten kopieren mit VBA


Schritt-für-Schritt-Anleitung

Um die Excel-Daten von zwei Sheets ("Altdaten" und "Neudaten") zu vergleichen und neue Datensätze zu kopieren, kannst du den folgenden VBA-Code verwenden. Dieser Code geht davon aus, dass du Excel 2016 nutzt.

  1. Öffne die Excel-Datei mit den beiden Tabellenblättern.
  2. Drücke ALT + F11, um den Visual Basic for Applications (VBA) Editor zu öffnen.
  3. Klicke auf Einfügen und dann auf Modul, um ein neues Modul zu erstellen.
  4. Füge den folgenden Code in das Modul ein:
Sub DatenVergleichenUndKopieren()
    Dim wsAltdaten As Worksheet
    Dim wsNeudaten As Worksheet
    Dim lastRowAltdaten As Long
    Dim lastRowNeudaten As Long
    Dim i As Long
    Dim j As Long
    Dim gefunden As Boolean

    Set wsAltdaten = ThisWorkbook.Sheets("Altdaten")
    Set wsNeudaten = ThisWorkbook.Sheets("Neudaten")

    lastRowAltdaten = wsAltdaten.Cells(wsAltdaten.Rows.Count, "B").End(xlUp).Row
    lastRowNeudaten = wsNeudaten.Cells(wsNeudaten.Rows.Count, "B").End(xlUp).Row

    For i = 2 To lastRowNeudaten ' Annahme: 1. Zeile sind die Header
        gefunden = False
        For j = 2 To lastRowAltdaten
            If wsNeudaten.Cells(i, 2).Value = wsAltdaten.Cells(j, 2).Value Then
                gefunden = True
                Exit For
            End If
        Next j

        If Not gefunden Then
            wsAltdaten.Cells(lastRowAltdaten + 1, 1).Resize(1, 12).Value = wsNeudaten.Cells(i, 1).Resize(1, 12).Value
            wsAltdaten.Cells(lastRowAltdaten + 1, 13).Value = "Neu" ' Markierung in Spalte M
            lastRowAltdaten = lastRowAltdaten + 1
        End If
    Next i
End Sub
  1. Schließe den VBA-Editor und gehe zurück zu Excel.
  2. Drücke ALT + F8, wähle DatenVergleichenUndKopieren und klicke auf Ausführen.

Häufige Fehler und Lösungen

  • Fehler: "Subscript out of range"

    • Ursache: Der Name des Arbeitsblatts stimmt nicht mit dem im Code überein. Stelle sicher, dass die Blätter genau "Altdaten" und "Neudaten" heißen.
  • Fehler: "Type mismatch"

    • Ursache: Überprüfe, ob die Daten in der Spalte B (Inventarnummer) korrekt formatiert sind und keine Leerzeichen oder Sonderzeichen enthalten.

Alternative Methoden

Wenn du keinen VBA-Code verwenden möchtest, kannst du auch die Funktionen SVERWEIS oder FILTER in Excel nutzen, um Daten zu vergleichen. Diese sind jedoch weniger flexibel und erfordern manuelle Anpassungen.


Praktische Beispiele

Ein Beispiel für den Einsatz des Codes könnte sein:

  • In "Altdaten" sind folgende Inventarnummern: 1001, 1002, 1003
  • In "Neudaten" sind folgende Inventarnummern: 1002, 1004, 1005

Nach dem Ausführen des Codes werden die neuen Datensätze (1004, 1005) in "Altdaten" kopiert und mit "Neu" in Spalte M markiert.


Tipps für Profis

  • Teste den Code immer zuerst an einer Kopie deiner Excel-Datei, um Datenverlust zu vermeiden.
  • Du kannst den Code erweitern, um auch andere Spalten zu vergleichen oder weitere Bedingungen hinzuzufügen.
  • Nutze Debug.Print im Code, um Zwischenergebnisse zu überprüfen und den Ablauf besser zu verstehen.

FAQ: Häufige Fragen

1. Wie kann ich den VBA-Code anpassen, um mehr Spalten zu vergleichen?
Du kannst die Schleifen erweitern und weitere Bedingungen hinzufügen, um mehr Spalten zu berücksichtigen.

2. Funktioniert dieser Code auch in älteren Excel-Versionen?
Der Code sollte auch in älteren Versionen von Excel funktionieren, die VBA unterstützen, jedoch können sich einige Funktionen leicht unterscheiden.

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