Microsoft Excel

Herbers Excel/VBA-Archiv

Listen vergleichen


Betrifft: Listen vergleichen von: Hauke
Geschrieben am: 25.09.2019 12:00:06

Hallo zusammen,

ich habe die Aufgabe, 2 Dateien miteinander zu vergleichen und upzudaten.
Beide haben unterschiedliche Formate, die ich aber bereits mit VBA umgewandelt bekomme, so dass sie identisch aussehen.

Nun stehen in der Spalte E jeweils eindeutige Nummern. Es soll überprüft werden, ob die Nummer aus Datei 1 auch in der Spalte E der Datei 2 enthalten ist.

- Falls ja, dann soll die Spalte D (Datei 1) in die Spalte D (Datei 2) kopiert werden.
- Falls nein, soll die komplette Spalte der Datei 1 in die erste leere Zeile unten in der Datei 2 kopiert werden.

Folgendes habe ich bereits gebaut:


   Application.ScreenUpdating = False
   On Error Resume Next
   On Error GoTo 0
   Set wkb = Workbooks.Open(Filename:=my_FileName)
   Set wkb1 = ThisWorkbook
   wkb1.Activate
   Set wks = wkb.Worksheets(1)
   Set wks1 = wkb1.Worksheets(1)
   anz = wks.Cells(65536, 5).End(xlUp).Row
   anz1 = wks1.Cells(65536, 5).End(xlUp).Row
   For Z = 2 To anz1
    suchwert = wks1.Cells(Z, 5)
    With wks.Range("e2:a" & anz)
    Set c = .Find(suchwert, LookIn:=xlValues, LookAt:=xlWhole)
    If Not c Is Nothing Then
        For s = 4 To 5
            wks.Cells(c.Row, s) = wks1.Cells(Z, s)
        Next
      Else
        For s = 1 To 9
            wks.Cells(anz + 1, s) = wks1.Cells(Z, s)
            
        Next
        anz = wks.Cells(65536, 1).End(xlUp).Row
    End If
    End With
    Next
   Application.ScreenUpdating = True

Es wird immer nur eine neue Spalte eingefügt, wenn eine unbekannte Nummer in Spalte E auftaucht. Weitere Nummern werden nicht gezogen bzw eingefügt. ?!
Die Werte in Spalte 4 werden garnicht erfasst.

Kann mir evtl jemand helfen und hat eine Lösung für mein Problem?

Vielen Dank schonmal vorab!

LG,
Hauke

  

Betrifft: AW: Listen vergleichen von: MCO
Geschrieben am: 25.09.2019 12:40:39


Hallo Hauke!

Diese Angaben widersprechen sich:

On Error Resume Next
   On Error GoTo 0

Wenn du doch den Suchwert in spalte 5 festlegst, und in spalte 5 findest, wieso musst du den dann mit einer Schleife nochmal reinschreiben?

 anz1 = wks1.Cells(65536, 5).End(xlUp).Row
   For Z = 2 To anz1
    suchwert = wks1.Cells(Z, 5)
    With wks.Range("e2:a" & anz)
    Set c = .Find(suchwert, LookIn:=xlValues, LookAt:=xlWhole)
    If Not c Is Nothing Then
        For s = 4 To 5
            wks.Cells(c.Row, s) = wks1.Cells(Z, s)
        Next


Falls nein, soll die komplette Spalte der Datei 1 in die erste leere Zeile
Es wird immer nur eine neue Spalte eingefügt
Es mach gar keinen Sinn eine Spalte einzufügen, meinst du Zeile?

Vielleicht ist es doch sinnvoll eine Beispieldatei hochzuladen.

Gruß, MCO


  

Betrifft: AW: Listen vergleichen von: Hauke
Geschrieben am: 25.09.2019 12:55:14

Hi MCO,

danke für deine Rückmeldung.

Das mit den Schleifen macht natürlich keinen Sinn, das schaue ich mir nochmal an.

Habe mal 2 Beispieldateien erstellt:

https://www.herber.de/bbs/user/132195.xlsx
https://www.herber.de/bbs/user/132196.xlsx

Das Makro liegt in Datei 1 und ist der aktuellste Stand mit Werten. Der Wert TEST in Spalte D müsste ein Update erfahren in Datei 2 für 12348 und der für die Fehlende Nummer 12346 müsste die komplette Zeile ;) unten angefügt werden in Datei 2.

Das ist der Plan.


Beiträge aus dem Excel-Forum zum Thema "Listen vergleichen"