Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1128to1132
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Spalteninhalte vergleichen über zwei Tabellen

Spalteninhalte vergleichen über zwei Tabellen
Constantin
Hallo,
ich möchte bzw. muss zwei Tabellen (Tabelle1 und Tabelle2) in einer Arbeitsmappe zeilenweise und dann Spalte für Spalte vergleichen. Spalte 3 enthält jeweils einen eindeutigen Schlüssel (Nr.).
Mir wäre schon sehr geholfen, wenn ich wüsste, wie man eine größere Anzahl von Spalteninhalten innerhalb einer Zeile zellenweise (per VBA) vergleichen kann. Z.B. hat Zeile 5 in Tabelle1 die ID-Nr. 4711 (in Spalte 3). Angenommen, diese Nr. wird in Tabelle2 in Zeile 10 (in Spalte 3) gefunden. Es sollen nun die Spalten 4-40 von Zeile 5 der Tabelle1 mit den Spalten 4-40 von Zeile 10 der Tabelle2 verglichen werden. Unterscheiden sich zwei Vergleichszellen, soll die Zelle aus Tabelle1 farblich markiert werden.
Die erste Zeile beider Tabellen enthält die jeweiligen Spaltenüberschriften.
Wie könnte so ein Vergleich einer Zeile bzw. deren Spalten mit VBA angegangen werden?
Über einen Tipp würde ich mich freuen.
Grüße, Constantin

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Spalteninhalte vergleichen über zwei Tabellen
14.01.2010 23:03:17
Josef
Hallo Constantin,
ungetestet.
' **********************************************************************
' Modul: Modul5 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Sub vergleich()
  Dim objSh_1 As Worksheet, objSh_2 As Worksheet
  Dim vntRet As Variant, lngCol As Long, lngRow As Long, lngLast As Long
  
  On Error GoTo ErrExit
  Application.ScreenUpdating = False
  
  Set objSh_1 = Sheets("Tabelle1") 'Name der ersten Tabelle- Anpassen!
  Set objSh_2 = Sheets("Tabelle2") 'Name der zweiten Tabelle- Anpassen!
  
  With objSh_1
    'Zellfarben löschen
    .UsedRange.Interior.ColorIndex = xlNone
    'Letzte Datenzeile in "Tabelle1" ermitteln
    lngLast = Application.Max(2, .Cells(.Rows.Count, 1).End(xlUp).Row)
    
    'Zeilen durchlaufen
    For lngRow = 2 To lngLast
      'Fortschrittsmeldung in der Statuszeile
      Application.StatusBar = "Vergleiche Datensatz " & CStr(lngRow - 1) & " von " _
        & CStr(lngLast - 1) & " --- Bitte warten ---"
      'ID in "Tabelle2" suchen
      vntRet = Application.Match(.Cells(lngRow, 3), objSh_2.Columns(3), 0)
      
      'ID gefunden
      If IsNumeric(vntRet) Then
        'Spalten durchlaufen
        For lngCol = 4 To 40
          'Bei Unterschied markieren
          If .Cells(lngRow, lngCol) <> objSh_2.Cells(vntRet, lngCol) Then
            .Cells(lngRow, lngCol).Interior.ColorIndex = 6
          End If
        Next
      End If
    Next
  End With
  
  ErrExit:
  Application.ScreenUpdating = True
  Application.StatusBar = False
  Set objSh_1 = Nothing
  Set objSh_2 = Nothing
End Sub

Gruß Sepp

Anzeige
AW: Spalteninhalte vergleichen über zwei Tabellen
16.01.2010 12:15:49
Constantin
Hallo Sepp,
ich wollte Dir gleich am Abend noch eine Antwort geben, dann haben das System (oder eher meine Fähigkeiten) versagt. Also, verspätet Danke für die superschnelle und so prägnante Lösung!!! Damit kann ich bestens weiterarbeiten.
Gruß, Constantin
AW: Spalteninhalte vergleichen mit Kommentarfeld
18.01.2010 17:02:23
Constantin
Hallo Sepp oder wer es wissen könnte,
darf ich hier doch noch eine Nachfrage stellen? Wenn ich nun noch einbauen möchte, dass beim Vergleich beider Tabellen bzw. deren Spalteninhalte (im Falle von Unterschied) neben der farblichen Markierung noch ein Kommentarfeld in der gleichen Zelle von Tabelle1 erzeugt wird und dort der Vergleichswert von Tabelle2 eingetragen werden soll - wie müsste das Programm abgeändert werden?
Da beim Vergleich beider Tabellen es noch sein kann, dass Tabelle2 Sätze enthält, die in Tabelle1 nicht vorkommen, habe ich noch nachstehende kleine Programmergänzung vorgenommen ('Constantin).
Die Zeilen, die in Tabelle2 kein "X" bekommen haben, sollten nun noch an Tabelle1 angehängt und rot markiert werden.
Gruß, Constantin
und vielen Dank für eure Unterstützung.
'ID gefunden
If IsNumeric(vntRet) Then
'Spalten durchlaufen
For lngCol = 4 To 40
'Bei Unterschied markieren
If .Cells(lngRow, lngCol) objSh_2.Cells(vntRet, lngCol) Then
.Cells(lngRow, lngCol).Interior.ColorIndex = 6
.Cells(lngRow, 41).Value = "Änderung" 'Constantin
End If
Next
objSh_2.Cells(vntRet, 41).Value = "X" ' Constantin
End If
Anzeige
AW: Spalteninhalte vergleichen mit Kommentarfeld
18.01.2010 18:03:06
Constantin
... Kommentarfeld habe ich reingebracht (habe mich wohl selbst übertroffen). Ich versuche mich noch am Rest (fehlende Zeilen von Tabelle2 zum Schluss noch an Tabelle1 anhängen und markieren).
Gruß, Constantin

313 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige