Удалить пустые строки до переменной LastRow


Я пытаюсь удалить все пустые строки до переменной LastRow. Ниже вы найдете мои образцы. Тот, который работает , кажется серьезным обходным путем, и я считаю, что он может быть короче/быстрее, у меня просто нет знаний о том, как это сделать.

Works-серьезный обходной путь

LastRow = Cells(Rows.Count, "A").End(xlUp).Row

For i = 1 to LastRow
   If Range("A" & i).value = "" then
      Range("A" & i).value = "xxxxx"
   End if
Next i

For i = 1 to LastRow
   If Range("A" & i).value = "xxxxx" then
      Range("A" & i).Delete
      i = i - 1
   End if
Next i

Бесконечный цикл

LastRow = Cells(Rows.Count, "A").End(xlUp).Row

For i = 1 to LastRow
   If Range("A" & i).value = "" then
      Range("A" & i).Delete
      i = i - 1
   End if
Next i
2 2

2 ответа:

Во-первых, я предполагаю, что у вас есть расчет ручной

Во-вторых, у вас есть цикл for, который будет 1=i+1, и вы делаете i=i-1, таким образом, i=i+1-1 бесконечный цикл. Это также должно произойти в рабочем обходном пути (та же ошибка).

Вы можете для цикла с выбранным шагом, также отрицательные. Поскольку удаление сокращает диапазон, вы можете начать снизу и работать теперь

Код выглядит так:

LastRow = Cells(Rows.Count, "A").End(xlUp).Row

For i = LastRow to 1 Step -1
   If Range("A" & i).value = "" then
      Range("A" & i).Delete
   End if
Next i

Если вы хотите удалить всю строку, используйте Range("A" & i).EntireRow.Delete вместо этого.

Я не тестировал этот код, но он должен работать (возможно, с незначительными изменениями):

Range("A1:A" & LastRow).SpecialCells(xlCellTypeBlanks).EntireRow.Delete