1

У меня есть набор данных в Excel, который мне нужно отфильтровать строки, где нет данных (т.е. пустая ячейка). Это не так просто, как удалить строку с пустой ячейкой в одном столбце, но, если в трех столбцах есть пустые ячейки, следует удалить всю строку. Какой макрос потребуется для выполнения этого?

Пожалуйста, советую.

1 ответ1

1

Вот пример, где вы хотите проверить столбцы A , B и C

Option Explicit
Sub DeleteIfBlanks()
    Dim r As Long
    Dim rng As Range
    With ActiveSheet
        For r = 1 To .UsedRange.Rows.Count
            If LenB(.Cells(r, 1)) = 0 Then
            If LenB(.Cells(r, 2)) = 0 Then
            If LenB(.Cells(r, 3)) = 0 Then
                If rng Is Nothing Then Set rng = .Cells(r, 1) Else Set rng = Union(rng, .Cells(r, 1))
            End If
            End If
            End If
        Next
        If Not rng Is Nothing Then rng.EntireRow.Delete
    End With
End Sub

Вам нужно изменить формулировку LenB(.Cells(r, 1)) так что 1 соответствует номеру любого столбца, который вы хотите проверить на наличие пробелов.


Для других людей VBA: я вкладываю свои заявления IF для очень незначительного потенциального улучшения скорости. Я объединяю только первую ячейку и сворачиваю ее до целой строки в конце, потому что я ленивый и знаю нотацию ячейки лучше, чем запись строки. Если есть какие-то улучшения, которые являются функциональными, а не только стилистическими, дайте мне знать.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .