Другой способ, который я считаю наиболее эффективным при работе с большим объемом данных, - это .ClearContents
, а не .EntireRow.Delete
, и в конце удалить все пустые строки за один раз.Или, что еще лучше, подумайте об этом:
Columns("B:B").Replace What:="out", Replacement:=vbNullString, LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
Columns("B:B").SpecialCells(xlCellTypeBlanks).EntireRow.delete
Обратите внимание, что строки будут удаляться, если B пусто, так что подстраивайтесь под свои данные, но это самый быстрый способ сделать то, что вы пытаетесь сделать.