Hallo zusammen,
ich habe eine Mappe in Excel mit drei Reitern (Alt, Master und Vergleich). Die Liste in "Alt" und "Master" sind identisch aufgebaut, also immer die gleiche Spaltenanzahl (71) und die gleichen Spaltenüberschriften. Reiter "Vergleich" ist auch genau mit den selben Spaltenüberschriften beschriftet. Wobei hier in "Vergleich" in die 72. Spalte (BT) einfach eine bestimmte Spalte aus "Alt" reinkopiert werden soll, also passend zu dem Suchkriterium aus Spalte A. Und Spalte 73 soll mir ne Info geben basierend auf den ausgegebenen Wert von Spalte C bis Spalte BS. Nun möchte ich dass Excel folgendes macht:
1. Nimm die Spalte A aus der Masterliste und füge Sie in Spalte A in "Vergleich" ein.
2. Jetzt kommt der sverweis, der soll nämlich diese Zelle aus Spalte A in "Vergleich" in der Masterliste suchen und dann das gleiche in Alt suchen und dann die gesamte Zeile aus den 2 Listen (Alt und Master) miteinander vergleichen. Wenn die jeweiligen Zellen aus den entsprechenden Zeilen übereinstimmen, soll er für jede Zelle in der richtigen Spalte in "Vergleich" "OK" ausgeben. Gibt es Unterschiede soll er die Zelle, die unterschiedlich ist aus der Masterliste in die Vergleichsliste kopieren.
Dafür nutze ich diese Formel im Makro:
Dim Alt As Range
Dim Master As Range
Set Alt = ThisWorkbook.Worksheets("Alt").Range("A6:ZZ2000")
Set Master = ThisWorkbook.Worksheets("Master").Range("A6:ZZ2000")
ThisWorkbook.Worksheets("Vergleich").Activate
Range("B7:B2000").Formula = "=If(Vlookup(A7,Alt,2,False)=Vlookup(A7,Master,2,False),""OK"",Vlookup(A7,Master,2,False))"
Das klappt soweit, allerdings dauert es ewig bis Excel das ganze für 70 Spalten mit einigen hundert Zeilen macht. Es stürzt sehr oft ab weil da zuviele Formel den Zellen zugewiesen werden.
Außerdem soll in die vorletzte Spalte ein einfacher sverweis hin der mir anhand der info aus Spalte A in Vergleich genau die gewünschte Zelle aus "Alt" in die 72.Spalte kopieren.
Die 73. Spalte soll mir von Spalte C bis Spalte BS "Zeile identisch" ausgeben wenn alle Zellen den Wert "OK" haben und "Fehler" ausgeben sobald nur eine Zelle nicht "OK" drinnen stehen hat, da steht ja dann die Info aus "Master". Und manchmal gibt es die Datei aus der Masterliste nicht in der Liste "Alt". Da steht dann bei mir #NV. Dann soll er sagen "Datensatz fehlt".
Ich bin ein absoluter Anfänger was VBA angeht. Mit viel Mühe habe ich mir aus dem Netz was zusammengesucht, welches nciht so funktioniert wie gewünscht. Deshalb die Lösung mit der Formelzuweisung. Das zusammengeschnibelte füge ich unten auch hinzu. Wenn mir da jemand helfen könnte das richtig hinzukriegen wäre ich echt super dankbar :)
Hier der VBA code:
Sub Testlauf()
On Error Resume Next
Sheets("Vergleich").Select
Dim n_column As Long
Dim i As Long
Dim r As Long
Dim c As Long
Dim column As Long
r = 7: c = 2: column = 2
For n_column = 1 To 69
'For n_column= 1 To Range("XFD6).End(xlToLeft).Column-1
For i = 1 To Range("A100000").End(xlUp).Row - 6
If (Cells(r, c).Value = WorksheetFunction.Vlookup(Cells(r, 1).Value, Sheets("Alt").Range("A6:ZZ10000"), column, 0)) = (Cells(r, c).Value = WorksheetFunction.Vlookup(Cells(r, 1).Value, Sheets("Master").Range("A6:ZZ10000"), column, 0)) Then
Cells(r, c).Value = "OK"
r = r + 1
Else
Cells(r, c).Value = (Cells(r, c).Value = WorksheetFunction.Vlookup(Cells(r, 1).Value, Sheets("Master").Range("A6:ZZ10000"), column, 0))
r = r + 1
End If
Next
r = 7
column = column + 1
c = c + 1
Next
End Sub
Ich hoffe sehr dass mir jemand helfen kann.
LG
Sev
|