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

schneller Vergleich von Tabellen per VBA

Forumthread: schneller Vergleich von Tabellen per VBA

schneller Vergleich von Tabellen per VBA
Tabellen
Hallo,
ich möchte zwei Tabellen miteinander vergleichen. Dabei ist die eine Tabelle die Mastertabelle, welche zeilenweise einen Vergleich über alle Zeilen der Vergleichstabelle läuft. Wird in der Vergleichstabelle eine passende Zeile gefunden, soll diese markiert werden und die Suche für diese Zeile aus der Mastertabelle kann abgebrochen werden. Dann wird mit der nächsten Zeile aus der Mastertabelle das ganze erneut durchgeführt... usw.
Wie kann man diese Suche schnell im VBA umsetzen?
Danke für Tipps.
Gruß
Micha
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: schneller Vergleich von Tabellen per VBA
03.12.2011 00:15:14
Tabellen
Hi,
Code kommt in ein allgemeines Modul
Option Explicit
Sub MatchTab()
Dim Wks1 As Worksheet, Wks2 As Worksheet
Dim RangeMaster As Range, RangetoMatch As Range, Zelle As Range
'Tabellenname und Bereich anpassen
Set Wks1 = Sheets("Tabelle1")
Set RangeMaster = Wks1.Columns(1)
Set Wks2 = Sheets("Tabelle2")
Set RangetoMatch = Wks2.Columns(1)
On Error GoTo errExit
For Each Zelle In RangeMaster.SpecialCells(xlCellTypeConstants)
If Application.CountIf(RangetoMatch, Zelle) Then
Zelle.Interior.Color = vbGreen
Else
Zelle.Interior.Color = vbRed
End If
Next
errExit:
Set Wks1 = Nothing
Set RangeMaster = Nothing
Set Wks2 = Nothing
Set RangetoMatch = Nothing
End Sub

Grüße
Steffen
Anzeige
AW: schneller Vergleich von Tabellen per VBA
03.12.2011 23:28:41
Tabellen
Hallo Steffen,
mit dem CountIf ist es schön schnell. Ich hatte es vorher über mehrere geschachtelte Schleifen getan.
Danke.
Gruß
Micha
;
Anzeige
Anzeige

Infobox / Tutorial

Schneller Tabellenvergleich in Excel per VBA


Schritt-für-Schritt-Anleitung

Um einen schnellen Tabellenvergleich in Excel per VBA durchzuführen, kannst du den folgenden Code in ein allgemeines Modul einfügen:

Sub MatchTab()
    Dim Wks1 As Worksheet, Wks2 As Worksheet
    Dim RangeMaster As Range, RangetoMatch As Range, Zelle As Range
    ' Tabellenname und Bereich anpassen
    Set Wks1 = Sheets("Tabelle1")
    Set RangeMaster = Wks1.Columns(1)
    Set Wks2 = Sheets("Tabelle2")
    Set RangetoMatch = Wks2.Columns(1)

    On Error GoTo errExit
    For Each Zelle In RangeMaster.SpecialCells(xlCellTypeConstants)
        If Application.CountIf(RangetoMatch, Zelle) Then
            Zelle.Interior.Color = vbGreen
        Else
            Zelle.Interior.Color = vbRed
        End If
    Next
errExit:
    Set Wks1 = Nothing
    Set RangeMaster = Nothing
    Set Wks2 = Nothing
    Set RangetoMatch = Nothing
End Sub
  1. Öffne dein Excel-Dokument.
  2. Drücke ALT + F11, um den VBA-Editor zu öffnen.
  3. Gehe zu Einfügen > Modul, um ein neues Modul zu erstellen.
  4. Füge den obigen Code in das Modul ein.
  5. Schließe den VBA-Editor und kehre zu Excel zurück.
  6. Führe das Makro über Entwicklertools > Makros aus.

Häufige Fehler und Lösungen

  • Fehler: "Laufzeitfehler 1004"
    Lösung: Stelle sicher, dass die Tabellen "Tabelle1" und "Tabelle2" existieren und die richtigen Namen haben.

  • Fehler: Keine Zellen zum Vergleichen
    Lösung: Überprüfe, ob in der ersten Spalte der Mastertabelle Daten vorhanden sind. Der Code funktioniert nur, wenn es Werte gibt.


Alternative Methoden

Wenn du keinen VBA-Code verwenden möchtest, kannst du auch die Funktion VERGLEICH in Excel nutzen. Diese Funktion gibt die Position eines Wertes in einem bestimmten Bereich zurück. So kannst du die Werte manuell vergleichen, auch wenn dies weniger effizient ist.


Praktische Beispiele

Angenommen, du hast in "Tabelle1" die Mastertabelle mit den Werten A1:A10 und in "Tabelle2" die Vergleichstabelle. Du kannst den obigen VBA-Code verwenden, um die Werte in "Tabelle1" zu überprüfen. Gefundene Übereinstimmungen werden grün und nicht gefundene rot markiert.


Tipps für Profis

  • Optimiere deinen Excel VBA Vergleich, indem du die Daten in Arrays lädst, um die Geschwindigkeit zu erhöhen.
  • Verwende Application.ScreenUpdating = False, um das Flackern des Bildschirms während der Ausführung des Codes zu vermeiden.
Application.ScreenUpdating = False
' Dein Code hier
Application.ScreenUpdating = True

FAQ: Häufige Fragen

1. Wie kann ich den Code anpassen, um mehrere Spalten zu vergleichen?
Du kannst die Schleife einfach erweitern, um auch die anderen Spalten zu überprüfen, indem du die Columns-Eigenschaft für die gewünschten Spalten anpasst.

2. Funktioniert dieser VBA-Code in allen Excel-Versionen?
Ja, dieser Code sollte in den meisten modernen Excel-Versionen funktionieren, die VBA unterstützen, einschließlich Excel 2016 und später.

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