Ich wollte in meiner Tabelle diese Formel durch ein Makro ersetzen (vergleicht 2 spalten in tabelle 1 mit 2 spalten in tabelle 2). in der hoffnung das die performance meiner tabelle dadurch steigt.
(Die Formel steht in ca. 2000 Zeilen
=WENN(SUMMENPRODUKT((Mängelliste!$A$7:$A$398=B3)*(Mängelliste!$B$7:$B$398=D3)) -SUMMENPRODUKT((Mängelliste!$A$7:$A$398=B3)*(Mängelliste!$B$7:$B$398=D3)*(Mängelliste!$E$7:$E$398>0)) >0;"!Mängel!";"")
Im Internet habe ich ein makro gefunden welches ich meiner Tabelle angepasst habe. Es funktioniert auch, allerdings brauch es "ewig"(ca. 2 sec) bis es durchgelaufen ist.
Gibt es vielleicht eine schnellere Möglichkeit als eine For Next Schleife mein Vorhaben umzusetzen?
Private Sub Worksheet_Activate() 'Vergleicht die Spalte A des Tabellenblattes 1 mit der Spalte 2 des Tabelenblattes 2 _ und markiert die doppelten Werte in Hellgelb Dim i As Integer, j As Integer 'Festlegen der Variabeln Application.ScreenUpdating = False EndeA = Worksheets("Netz").Cells(Rows.Count, 2).End(xlUp).Row 'legt das Ende des ersten Bereiches fest EndeB = Worksheets("Mängelliste").Cells(Rows.Count, 1).End(xlUp).Row 'legt das Ende des zweiten Bereiches fest For i = 3 To EndeA 'beginnt bei Zelle 1 und hört bei der letzten ausgefüllten Zelle des Bereiches auf For j = 8 To EndeB If Sheets("Netz").Cells(i, 2) = Sheets("Mängelliste").Cells(j, 1) And Sheets("Netz").Cells(i, 4) _ = Sheets("Mängelliste").Cells(j, 2) And Sheets("Mängelliste").Cells(j, 5) = Empty Then Sheets("Netz").Cells(i, 6) = "!Mängel!" End If 'Fortsetzen der Schleife Next j Next i Application.ScreenUpdating = True End Sub
Private Sub Worksheet_Deactivate()
EndeA = Worksheets("Netz").Cells(Rows.Count, 2).End(xlUp).Row
Range("F3:F" & EndeA) = Empty
End Sub
Gruß alex