Удалять пустые строки с разными последними строками каждый месяц - PullRequest
0 голосов
/ 05 мая 2018

Я хотел бы удалить пустые строки между 4-й строкой вплоть до последней строки перед зелеными ячейками внизу (в данном случае это 9-я строка). Однако последний ряд меняется каждый месяц при появлении новой или закрытой торговой точки. Как мне это сделать, пожалуйста? В настоящее время я модифицирую код VBA вручную каждый месяц.

Это мой код:

Sub Raw_Data_Delete_Rows()

  Rows("3:3").Select
  Selection.AutoFilter
  Range("A4:Z9").AutoFilter Field:=1, Criteria1:="=" 
  Range("A4:Z9").Select
  Selection.Delete

End Sub

enter image description here

1 Ответ

0 голосов
/ 05 мая 2018

При этом удаляются все пустые строки, начиная с 4 до last row - 1


Option Explicit

Public Sub RawDataDeleteRows()
    Dim ur As Range

    Set ur = ActiveSheet.UsedRange

    If ur.Rows.Count > 4 Then
        With ur.Offset(2).Resize(ur.Rows.Count - 2)
            .AutoFilter Field:=1, Criteria1:="="
            If .SpecialCells(xlCellTypeVisible).Rows.Count > 1 Then
                .Offset(1).Resize(ur.Rows.Count - 4).EntireRow.Delete
            End If
            .AutoFilter
        End With
    End If
End Sub

Диапазоны объяснили

  1. Начальный диапазон, используемый для автофильтра

ur.Offset(2).Resize(ur.Rows.Count - 2)

  • .Offset(2) - перемещает ряды Range 2 вниз, сверху (в ряд 3)
  • .Resize(ur.Rows.Count - 2) - изменить размер нижней, 2 строки вверх, до последней использованной строки

  1. Диапазон проверки удаляемых строк

.SpecialCells(xlCellTypeVisible).Rows.Count > 1

  • Убедитесь, что выходят другие (видимые) строки, кроме заголовка автофильтра

  1. Диапазон, используемый для удаления пустых строк:

.Offset(1).Resize(ur.Rows.Count - 4).EntireRow.Delete

  • Этот диапазон основан на начальном диапазоне автофильтрации, указанном выше (1)
  • .Offset(1) - перемещает ряд диапазона 1 вниз со строки 3 (строка 4)
  • .Resize(ur.Rows.Count - 4) - изменить размер нижней части, 4 строки вверх - исключить 3 hdrs и lastrow

Примечание. Определение последней строки на основе UsedRange является преднамеренным, если последняя строка пуста и имеет зеленый цвет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...