1

Мы используем приложение, которое генерирует финансовый обзор в Excel. (Используя Excel 2010 на данный момент.) Из-за некоторой конфигурации в этом приложении иногда он генерирует 4 или 5 пустых строк между значениями в Excel, где нам нужна только одна пустая строка. Я не могу использовать макрос, потому что эти лишние строки не всегда находятся в одном и том же месте.

Я пытаюсь удалить эти чрезмерно пустые строки, но я не хочу удалять их все. Отдельные пустые строки хороши и очень нужны. Есть ли какая-нибудь формула, которая помогла бы мне удалить лишние пустые строки минус одна пустая строка, которая должна быть там?

Надеюсь, вы, ребята, можете мне помочь.

1 ответ1

1

Для ваших первых критериев вы можете подсчитать, сколько ячеек в каждой строке имеют значения, используя функцию листа CountA() .

Фрагмент кода:

If .CountA(ws.rows(r)) = 0

Тогда вы хотели удалить только строку, если есть более одной пустой строки подряд, поэтому мы добавим это в наш If...Then заявление. Это проверяет вышеупомянутую строку с r - 1:

... And .CountA(ws.Rows(r - 1)) = 0

Это проверяет, является ли вышеупомянутая строка пустой; только если это так, он добавит вашу строку в специальный диапазон, который будет отслеживать ваши удаления строк: delRng .

Вот весь код VBA:

Sub removeEmptySpaces()

    Dim r As Long, ws As Worksheet, delRng As Range
    Set ws = ThisWorkbook.Worksheets(1)

    With Application.WorksheetFunction
        For r = 2 To lastRow(ws)
            If .CountA(ws.Rows(r)) = 0 And .CountA(ws.Rows(r - 1)) = 0 Then
                If delRng Is Nothing Then
                    Set delRng = ws.Rows(r)
                Else
                    Set delRng = Union(ws.Rows(r), delRng)
                End If
            End If
        Next
    End With

    If Not delRng Is Nothing Then delRng.Delete

End Sub

Function lastRow(ws As Worksheet, Optional col As Variant = 1) As Long
    With ws
        lastRow = .Cells(.Rows.Count, col).End(xlUp).Row
    End With
End Function

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