Начиная с чего-то, что работает медленно, вот что:
Sub RemoveNumbersFromColumnA()
Dim i As Long
Dim wks As Worksheet
Set wks = Worksheets(1)
For i = 10 To 1 Step -1
If IsNumeric(Left(wks.Cells(i, "A"), 1)) Then
Debug.Print wks.Cells(i, "A"); " deleting..."
wks.Cells(i, "A").Delete
End If
Next i
End Sub
Идея состоит в том, чтобы l oop назад и проверить, является ли самая левая часть содержимого ячейки цифрой c. Если это число c, распечатайте информацию в ближайшем окне и удалите ее. Это то, что вы получаете, нажимая F8 , например, шаг за шагом:
Затем вы можете продолжить, как сохранение строки, которые будут удалены в один диапазон, и удаляют этот диапазон только один раз в конце. Как этот:
Sub RemoveNumbersFromColumnA()
Dim i As Long
Dim myCell As Range
Dim rowsToDelete As Range
For i = 1 To 10
Set myCell = Worksheets(1).Cells(i, "A")
If IsNumeric(Left(myCell, 1)) Then
Debug.Print myCell; " adding..."
If rowsToDelete Is Nothing Then
Set rowsToDelete = myCell.EntireRow
Else
Set rowsToDelete = Union(rowsToDelete, myCell.EntireRow)
End If
End If
Next i
If Not rowsToDelete Is Nothing Then
rowsToDelete.Delete
End If
End Sub