Hallo,
ich hoffe ihr könnt mir vielleicht weiter helfen. Ich bin noch recht neu im Umgang mit VBA und komme nicht weiter.
Ich möchte die Werte aus zwei Tabellenblättern miteinander vergleichen. Der zu vergleichende Datensatz besteht aus jeweils 11 Werten. Dazu soll die erste Zeile in Blatt "Neu" mit der ersten in Blatt "Alt" verglichen werden. Stimmen die Werte überein, sollen die Werte die dort in den Spalten 12 bis 16 stehen in die entsprechende Zeile in "Neu" übertragen werden. Stimmen die Werte nicht überein, soll die Zeile aus "Neu" mit der zweiten Zeile aus "Alt" verglichen werden, usw. Wird kein passender Datensatz gefunden, soll eine 0 in die Spalten 12 bis 16 eingetragen werden.
Dann soll das ganze für die nächste Zeile in "Neu" wiederholt werden.
Die Anzahl der jeweiligen Zeilen ist Variabel und kann deshalb nicht mit einem festen Wert festgelegt werden.
mein größtes Problem ist, dass ich die Zuweisung der Daten nicht richtig hin bekomme
Liebe Grüße Tess
Hier mein bisheriger, leider fehlerhafter Ansatz:
Function Vergleich(Reihe1() As Variant, Reihe2() As Variant) As Boolean
If Reihe1(1, 1) <> Reihe2(1, 1) And _
Reihe1(1, 2) <> Reihe2(1, 2) And _
Reihe1(1, 3) <> Reihe2(1, 3) And _
Reihe1(1, 4) <> Reihe2(1, 4) And _
Reihe1(1, 5) <> Reihe2(1, 5) And _
Reihe1(1, 6) <> Reihe2(1, 6) And _
Reihe1(1, 7) <> Reihe2(1, 7) And _
Reihe1(1, 8) <> Reihe2(1, 8) And _
Reihe1(1, 9) <> Reihe2(1, 9) And _
Reihe1(1, 10) <> Reihe2(1, 10) And _
Reihe1(1, 11) <> Reihe2(1, 11) Then
Vergleich = False
Exit Function
End If
Vergleich = True
End Function
Sub Wertevergleich() 'Vergleich der Berechnungswerte und der alten Werte mit den neuen Werten.
'Definition Laufvariablen
Dim var1 As Integer
Dim var2 As Integer
'Definition Zeilenvariablen
Dim letzteZeileNeu As Integer
letzteZeileNeu = Cells(Rows.Count, 1).End(xlUp).Row
Dim letzteZeileAlt As Integer
letzteZeileAlt = Cells(Rows.Count, 1).End(xlUp).Row
'Analysiere und gehe Zeile für Zeile durch
For var1 = 4 To letzteZeileNeu
Dim ZeileNeu()
ZeileNeu() = Worksheets("Alt").Range("A" & var1 & ":K" & var1).Value
Dim ZeileAlt()
Dim passt As Boolean
'finde jeweilige Zeile in Berechung und übertrage Werte
passt = False
For var2 = 2 To letzteZeileAlt
ZeileAlt() = Worksheets("Neu").Range("A" & var2 & ":K" & var2)
If Vergleich(ZeileNeu, ZeileAlt) = True Then
'Dann übernehme die folgenden Werte
Worksheets("Alt").Range("L" & var2 & ":R" & var2).Value = Worksheets("Neu").Range("L" & var1 & ":R" & var1).Value
passt = True
var2 = var2 + 1
Exit For
End If
Next var2
If passt <> True Then
Range(Cells(var1, 16), Cells(var1, 21)).Value = "0"
End If
Next var1
MsgBox "Abfrage beendet"
End Sub
|