An Daniel bzw Bambi
06.05.2013 23:58:04
Mustafa
da dein Beitrag leider schon im Archiv gelandet ist
https://www.herber.de/forum/archiv/1308to1312/t1311062.htm#1311062
antworte ich hier.
Probier mal folgenden Code für deine Umfangreiche Beispieltabelle:
Option Explicit
Sub Daniel()
Dim Wks1 As Worksheet, Wks2 As Worksheet, Wks3 As Worksheet
Dim Bereich1 As Variant, Bereich2 As Variant, Bereich3 As Variant
Dim LngLetzteZeile As Long
Dim LngCounter1 As Long, LngCounter2 As Long, LngErgebnis As Long
Dim Col As New Collection
Dim Anfangsdatum As Date, Enddatum As Date
If Left(Sheets(Sheets.Count).Name, 11) = "Reparaturen" Then Sheets(Sheets.Count).Delete
Worksheets("Reparaturen").Copy after:=Sheets(Sheets.Count)
Set Wks1 = ActiveSheet
Set Wks2 = Worksheets("Parameter")
Set Wks3 = Worksheets("Kosten")
Wks3.Range("A2").CurrentRegion.ClearContents
With Wks1
LngLetzteZeile = .Cells(.Rows.Count, 1).End(xlUp).Row
Bereich1 = .Range(.Cells(2, 6), .Cells(LngLetzteZeile, 6)).Value
Bereich2 = .Range(.Cells(2, 2), .Cells(LngLetzteZeile, 2)).Value
Bereich3 = .Range(.Cells(2, 13), .Cells(LngLetzteZeile, 13)).Value
End With
Anfangsdatum = Wks2.Cells(5, 2)
Enddatum = Wks2.Cells(6, 2)
On Error Resume Next
For LngCounter1 = 1 To UBound(Bereich1)
Col.Add Bereich1(LngCounter1, 1), CStr(Bereich1(LngCounter1, 1))
Next
On Error GoTo 0
For LngCounter1 = 1 To Col.Count
For LngCounter2 = 1 To UBound(Bereich1)
If Bereich1(LngCounter2, 1) = Col(LngCounter1) Then
If Bereich2(LngCounter2, 1) >= Anfangsdatum And Bereich2(LngCounter2, 1)
Hier werden sämtliche Berechnungen und Schleifen in den 3 Arrays durchgeführt, welches wesentlich schneller sein sollte als beim letzten Code den ich dir geschrieben hatte.
Rückmeldung obs Hilft wäre nett.
Gruß aus der Domstadt Köln.