Makro effizienter machen
13.11.2023 13:25:58
Julian
ich hab folgendes Problem, da ich mich in VBA nicht gut auskenne: Bei dem unten abgebildeten Makro ist das Ziel Das Blatt "Arbeit" mit den restlichen Blättern zu vergleichen, nach möglichen Duplikaten schauen und wenn ein Duplikat auftaucht dieses zu löschen. Problem hierbei ist, dass es eine ewig lange Durchlaufzeit hat, da das Blatt Arbeit jedes Mal neu durchlaufen wird.
Ist es möglich die anderen Blätter z.B. in Array zu packen und das Blatt "Arbeit" dann nur noch mit dem Array, in dem sich alle anderen Blätter zu vergleichen, um so Zeit einzusparen?
Vielen Dank schon mal im Voraus und ich bin gespannt auf eure Ideen!
LG Julian
Dim k As Long
With Sheets("Arbeit")
For k = .Cells(Rows.Count, "CV").End(xlUp).Row To 2 Step -1
If Application.IsNumber(Application.Match(.Cells(k, "CV"), Sheets("Arbeit 1").Columns(100), 0)) Then
.Cells(k, "CV").EntireRow.Delete
ElseIf Application.IsNumber(Application.Match(.Cells(k, "CV"), Sheets("Arbeit 2").Columns(100), 0)) Then
.Cells(k, "CV").EntireRow.Delete
ElseIf Application.IsNumber(Application.Match(.Cells(k, "CV"), Sheets("Arbeit 3").Columns(100), 0)) Then
.Cells(k, "CV").EntireRow.Delete
ElseIf Application.IsNumber(Application.Match(.Cells(k, "CV"), Sheets("Arbeit 4").Columns(100), 0)) Then
.Cells(k, "CV").EntireRow.Delete
ElseIf Application.IsNumber(Application.Match(.Cells(k, "CV"), Sheets("Arbeit 5").Columns(100), 0)) Then
.Cells(k, "CV").EntireRow.Delete
ElseIf Application.IsNumber(Application.Match(.Cells(k, "CV"), Sheets("Arbeit 6").Columns(100), 0)) Then
.Cells(k, "CV").EntireRow.Delete
ElseIf Application.IsNumber(Application.Match(.Cells(k, "CV"), Sheets("Arbeit 7").Columns(100), 0)) Then
.Cells(k, "CV").EntireRow.Delete
ElseIf Application.IsNumber(Application.Match(.Cells(k, "CV"), Sheets("Arbeit 8").Columns(100), 0)) Then
.Cells(k, "CV").EntireRow.Delete
End If
Next
End With
End Sub