У меня есть две разные таблицы с одинаковым количеством строк в каждой. В столбце R у меня есть «Новый» или «Старый» в зависимости от строки (это динамическое значение). Что я хочу сделать, так это, если строка в Worksheet1 содержит «Old» в столбце R, а затем удалить эту строку в Worksheet1 и Worksheet2.
Теперь я попробовал два кода для этого:
Dim w1 As Worksheet
Dim w2 As Worksheet
Set w1= Worksheets("Sheet1")
Set w2= Worksheets("Sheet2")
'-----------------------------------------------------
'Code 1
'-----------------------------------------------------
Application.ScreenUpdating = False
For r = w1.UsedRange.Rows.Count To 1 Step -1
If Cells(r, "R") = "Old" Then
w1.Rows(r).EntireRow.Delete
w2.Rows(r).EntireRow.Delete
End If
Next r
Application.ScreenUpdating = True
'-----------------------------------------------------
'Code 2
'-----------------------------------------------------
Dim i As Long
i = 1
Application.ScreenUpdating = False
Do While i <= w1.Range("R1").CurrentRegion.Rows.Count
If InStr(1, w1.Cells(i, 18).Text, "Old", vbTextCompare) > 0 Then
w1.Cells(i, 1).EntireRow.Delete
w2.Cells(i, 1).EntireRow.Delete
Else
i = i + 1
End If
Loop
Application.ScreenUpdating = True
Обычно у меня +800 строк, поэтому код 1 работает, как нужно, но иногда это занимает слишком много времени, например, 3 минуты. Код 2 застрял до сих пор.
Какой эффективный способ сделать это?