teste mal so....
29.11.2014 12:10:08
Tino
Hallo,
ok. kannst mal so versuchen.
kommt als Code in Modul1
Option Explicit
Sub Vergleich()
Dim ListAbgleich1()
Dim ArListe1PLZ, ArListe1Name, ArListe2
Dim n&, nn&, nnn&, varValue, varValues
Dim oWSListe1 As Worksheet, oWSListe2 As Worksheet
Set oWSListe1 = Tabelle1 'Tabelle Liste 1
Set oWSListe2 = Tabelle2 'Tabelle Liste 2
Const SpPLZ_Liste1& = 4 'Spalte PLZ Liste1
Const SpName_Liste1& = 2 'Spalte Name Liste1
Const SpPLZ_Liste2& = 7 'Spalte PLZ Liste2
Const SpName_Liste2& = 4 'Spalte Name Liste2
With oWSListe1 'Tabelle anpassen
With .Range(.Cells(2, SpPLZ_Liste1), .Cells(.Rows.Count, SpPLZ_Liste1).End(xlUp)).EntireRow
ArListe1PLZ = .Columns(SpPLZ_Liste1).Resize(, 2) 'Spalte PLZ
ArListe1Name = .Columns(SpName_Liste1).Resize(, 2) 'Spalte Firmenname
End With
End With
With oWSListe2 'Tabelle anpassen
With .Range(.Cells(2, SpPLZ_Liste2), .Cells(.Rows.Count, SpPLZ_Liste2).End(xlUp)).EntireRow
ArListe2 = .Cells(1, 1).Resize(.Rows.Count, 10)
End With
End With
Redim Preserve ListAbgleich1(1 To Ubound(ArListe1PLZ), 1 To Ubound(ArListe2, 2))
For n = 1 To Ubound(ArListe1PLZ)
For nn = 1 To Ubound(ArListe2)
If ArListe1PLZ(n, 1) = ArListe2(nn, SpPLZ_Liste2) Then
varValues = Split(ArListe1Name(n, 1), " ")
For Each varValue In varValues
If InStr(ArListe2(nn, SpName_Liste2), varValue) > 0 Then
For nnn = 1 To Ubound(ArListe2, 2)
ListAbgleich1(n, nnn) = ArListe2(nn, nnn)
Next nnn
Exit For
End If
Next varValue
End If
Next nn
Next n
'Ausgabe *****************************************************
With oWSListe1 'Tabelle anpassen
'erste Zelle anpassen
.Range("H2").Resize(Ubound(ListAbgleich1), Ubound(ListAbgleich1, 2)) = ListAbgleich1
End With
End Sub
Gruß Tino