Ich bewundere snb's kompakte Programm und würde es, wenn Power Querry nicht in Frage kommt auch einsetzen. Insbesondere, da es keine sortierten Listen vorraussetzt.
Auf meinem Rechner benötigt das Programm für die ca 250.000 Einträge < 23 Sekunden.
Wenn es aber wirklich auf die Geschwindigkeit ankommt und sichergestellt ist, dass die Listen sortiert sind, kann man auf den kleinen Overhead fürs dictionary verzichten und die Auswertung über einfache Schleifen realisieren. Dann benötigt das Programm auf meinem Rechner für die ca. 250.000 Einträge < 8 Sekunden.
Code:
Sub tuwat()
Anf = Timer
Dim ZeKu As Long
Dim ZeUm As Long
Dim ZeAr As Long
Dim ZeBe As Long
Dim MaxUm As Long
Dim MaxAr As Long
Dim MaxBe As Long
Dim Res()
Dim Ku As Variant
Dim Um As Variant
Dim Ar As Variant
Dim Be As Variant
Ku = Sheets("Kunden").Cells(1).CurrentRegion
Um = Sheets("Umsatz").Cells(1).CurrentRegion
Ar = Sheets("Artikel").Cells(1).CurrentRegion
Be = Sheets("Besuche").Cells(1).CurrentRegion
ReDim Res(1 To UBound(Ku, 1), 1 To 11)
MaxUm = UBound(Um, 1)
MaxAr = UBound(Ar, 1)
MaxBe = UBound(Be, 1)
ZeUm = 2
ZeAr = 2
ZeBe = 2
For ZeKu = 2 To UBound(Ku, 1)
While Um(ZeUm, 1) < Ku(ZeKu, 1)
ZeUm = ZeUm + 1
Wend
While Ar(ZeAr, 1) < Ku(ZeKu, 1)
ZeAr = ZeAr + 1
Wend
While Be(ZeBe, 1) < Ku(ZeKu, 1)
ZeBe = ZeBe + 1
Wend
Res(ZeKu, 1) = Ku(ZeKu, 1)
Res(ZeKu, 2) = Ku(ZeKu, 2)
If Um(ZeUm, 1) = Ku(ZeKu, 1) Then
Res(ZeKu, 3) = Um(ZeUm, 3)
Res(ZeKu, 6) = Um(ZeUm, 4)
Res(ZeKu, 9) = Um(ZeUm, 5)
If ZeUm = MaxUm Then
Um(ZeUm, 1) = 9 ^ 9
Else
ZeUm = ZeUm + 1
End If
End If
If Ar(ZeAr, 1) = Ku(ZeKu, 1) Then
Res(ZeKu, 4) = Ar(ZeAr, 3)
Res(ZeKu, 7) = Ar(ZeAr, 4)
Res(ZeKu, 10) = Ar(ZeAr, 5)
If ZeAr = MaxAr Then
Ar(ZeAr, 1) = 9 ^ 9
Else
ZeAr = ZeAr + 1
End If
End If
If Be(ZeBe, 1) = Ku(ZeKu, 1) Then
Res(ZeKu, 5) = Be(ZeBe, 3)
Res(ZeKu, 8) = Be(ZeBe, 4)
Res(ZeKu, 11) = Be(ZeBe, 5)
If ZeBe = MaxBe Then
Be(ZeBe, 1) = 9 ^ 9
Else
ZeBe = ZeBe + 1
End If
End If
Next ZeKu
Sheets("Sheet9").Cells(1, 13).Resize(UBound(Res, 1), UBound(Res, 2)) = Res
MsgBox Timer - Anf
End Sub
ps. Fenneks Version benötigt auf meinem Rechner > 700 Sekunden.