witam,
napisałem makro, które filtruje plik z danymi i usuwa rekordy z danymi które mnie nie interesują.
Jednym z etapów jest usunięcie tych rekordów, gdzie ID występuje mniej niż 4 razy. Zrobiłem to poprzez CountIf, wpisując w dodatkowej kolumnie liczbę wystąpień, a następnie odfiltrowałem i usunąłem. Przy pliku ze 140 tys rekordów makro działa ok 8 minut, przy drugim pliku z ponad milionem rekordów czas znacznie się wydłuża.
czy jest jakiś sposób lub zamiennik na funkcję countiff?
mam
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Application.EnableEvents = False
a tutaj fragment kodu z countif
Dim wb_this As Excel.Workbook
Set wb_this = ThisWorkbook
For j = 2 To ost_crm
zremed = Application.VLookup(wb_this.Sheets("roboczy").Range("A" & j), wb_zrem.Sheets(1).Range("A:A"), 1, False)
ile_wystapien = Application.WorksheetFunction.CountIf(wb_this.Sheets("roboczy").Range("A:A"), wb_this.Sheets("roboczy").Range("A" & j))
wb_this.Sheets("roboczy").Range("I" & j).Value = ile_wystapien
If IsError(zremed) Then
wb_this.Sheets("roboczy").Range("H" & j).Value = "brak"
Else
wb_this.Sheets("roboczy").Range("H" & j).Value = zremed
End If
Next j