Я хочу оптимизировать свой код, который перебирает все строки и удаляет его, если существует определенное значение. Тем не менее, я сейчас перебираю> 100000 строк, поэтому я хочу улучшить скорость.VBA - Зацикливание строк и удаление, если существует несколько значений
Основное назначение: Цикл по всем строкам и удалить его, если а) клеток (строка, "А") значение = "X1", б) ячейку (строка, "S") значение.. = «X2» и c) ячейка (строка «AW»). Значение = «X3».
Мой текущий код выглядит следующим образом:
Call FilterData("A", "X1")
Call FilterData("S", "X2")
Call FilterData("AW", "X3")
Sub FilterData(Column as String, Check as String)
Dim Firstrow As Long
Dim Lastrow As Long
Dim Lrow As Long
Dim CalcMode As Long
Dim ViewMode As Long
With Application
CalcMode = .Calculation
.Calculation = xlCalculationManual
.ScreenUpdating = False
End With
If Not Sheets("XXX").AutoFilterMode Then
Sheets("XXX").Range("1:1").AutoFilter
End If
Sheets("XXX").Range("A2:BT1048576").Sort _
Key1:=Sheets("XXX").Range(Column & "1"), Order1:=xlAscending
With Sheets("XXX")
.Select
ViewMode = ActiveWindow.View
ActiveWindow.View = xlNormalView
.DisplayPageBreaks = False
Firstrow = .UsedRange.Cells(1).Row
Lastrow = .UsedRange.Rows(.UsedRange.Rows.Count).Row
For Lrow = Lastrow To Firstrow Step -1
With .Cells(Lrow, Column)
If Not IsError(.Value) Then
If .Value = Check Then .EntireRow.Delete
End If
End With
Next Lrow
End With
End Sub
Я знаю, я случайно отправил его в качестве ответа :( – Jaz
я тоже не хватает репутации, чтобы добавить комментарий к сожалению, – Jaz
Вы можете уточнить немного, @Jaz – hskrijelj