Sub Abgleich()
Dim AnzEingabe As Integer, SpaltenIndex As Integer
AnzEingabe = 3 'lieferanten anzahl
SpaltenIndex = 3 'spaltenindex
Dim ZielAnz As Long, QuellAnz As Long, ZeilenMerker As Long, SpAnz As Long
Dim SpSuche As Long, ZielSpaltenIndex As Long, QuellZeilen As Long, QuellSpZeile As Long
Dim ZielZeiger As Boolean
Workbooks(2).Worksheets(1).Activate
QuellAnz = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row
ReDim Quell(QuellAnz, SpaltenIndex) As Variant
Quell() = Range(Cells(1, 1), Cells(QuellAnz, SpaltenIndex))
Workbooks(1).Worksheets(1).Activate
ZielAnz = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
ZeilenMerker = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
ReDim Ziel(ZielAnz + QuellAnz, AnzEingabe * SpaltenIndex) As Variant
Ziel() = Range(Cells(1, 1), Cells(ZielAnz + QuellAnz, AnzEingabe * SpaltenIndex))
For SpSuche = 1 To AnzEingabe * SpaltenIndex Step SpaltenIndex
If Ziel(1, SpSuche) = Quell(1, 1) Then ZielSpaltenIndex = SpSuche
Next SpSuche
SpAnz = ActiveSheet.Cells(Rows.Count, ZielSpaltenIndex).End(xlUp).Row
ZeilenMerker = ActiveSheet.Cells(Rows.Count, ZielSpaltenIndex).End(xlUp).Row
For QuellZeilen = 1 To QuellAnz
For QuellSpZeile = 1 To ZielAnz
If Quell(QuellZeilen, 1) = Ziel(QuellSpZeile, ZielSpaltenIndex) And Quell(QuellZeilen, 2) = Ziel(QuellSpZeile, ZielSpaltenIndex + 1) Then
ZielZeiger = True
Ziel(QuellSpZeile, ZielSpaltenIndex + 2) = Quell(QuellZeilen, 3)
Exit For
End If
Next QuellSpZeile
If ZielZeiger = False Then
SpAnz = SpAnz + 1
Ziel(SpAnz, ZielSpaltenIndex) = Quell(QuellZeilen, 1)
Ziel(SpAnz, ZielSpaltenIndex + 1) = Quell(QuellZeilen, 2)
Ziel(SpAnz, ZielSpaltenIndex + 2) = Quell(QuellZeilen, 3)
Else
ZielZeiger = False
End If
Next QuellZeilen
Range(Cells(1, 1), Cells(ZeilenMerker + QuellAnz, AnzEingabe * SpaltenIndex)).Resize(UBound(Ziel())) = Ziel()
End Sub