3

У меня серьезная проблема с огромным листом Excel, из которого мне нужно удалить пустые строки.

Моя проблема в том, что я не могу использовать классический F5-> Выбрать пробелы-> удалить, так как некоторые поля в непустых строках также являются пустыми.

Упрощенный пример:

В приведенном выше примере, как мне удалить строки 2, 3, 5, 6, 8, 9, 11, 12, 14, 15, 16 без fx С7 заканчивается в С2?

Отдельный выбор пустых строк на реальном листе Excel занял бы слишком много времени, поскольку в нем более 35 000 строк, и этот трюк - не разовая вещь.

8 ответов8

3

Вы можете вставить вспомогательный столбец перед столбцом A в строке 2 по формуле:

=COUNTA(B2:XFD2)

Скопируйте его на 35 000 строк, отфильтруйте столбец A для 0, выделите видимые строки и удалите их. Нефильтр и строки, которые имели значение хотя бы в одном столбце, останутся. Затем удалите вспомогательный столбец.

2

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

Sub delblankrows()

Dim s1 As Worksheet
Dim tmpR As Range
Dim rowcount As Long, colcount As Long, i As Long, j As Long, k As Boolean

'Change "Sheet1" to the name of your worksheet.
Set s1 = Sheets("Sheet1")
Set tmpR = s1.UsedRange
rowcount = tmpR.Rows.Count
colcount = tmpR.Columns.Count

'Starts from bottom row and looks for non-empty cells from left to right.
'Moves to row above if non-empty cell is found.
'If none is found, then deletes row and shifts values up.
For i = rowcount To 1 Step -1
    k = 0
    For j = 1 To colcount
        If tmpR.Value2(i, j) <> "" Then
            k = 1
            Exit For
        End If
    Next j
    If k = 0 Then
        tmpR.Rows(i).Delete Shift:=xlUp
    End If
Next i

End Sub
2
Sub DeleteEmptyRows()

'   Deletes the entire row within the selection if the ENTIRE row contains no data.

Dim i As Long
ActiveSheet.UsedRange.Select

With Application
    ' Turn off calculation and screenupdating to speed up the macro.
    .Calculation = xlCalculationManual
    .ScreenUpdating = False

    For i = Selection.Rows.Count To 2 Step -1
        If WorksheetFunction.CountA(Selection.Rows(i)) = 0 Then Selection.Rows(i).EntireRow.Delete
    Next i

    .Calculation = xlCalculationAutomatic
    .ScreenUpdating = True
End With

End Sub
1

Просто найдите уникальный столбец. Отфильтруйте его по значению "Пробел" и удалите все строки из Excel. Затем удалите фильтр, и вы получите только непустые строки

0

Сводная таблица с той же разметкой сделает это и быстро. Если вам также необходимо сохранить исходный порядок строк (за исключением пробелов), используйте дополнительный столбец, который я назвал "ForSort". Формула в ячейке D2 имеет вид = IF (ISBLANK (A2), "", ROW (A2)). (Скопируйте эту формулу до конца столбца D.)

Поместите все поля в раздел "Метки строк" формы "Список полей сводной таблицы", как показано выше. В любом другом разделе ничего не нужно.

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

Наконец, вы можете сделать "Заменить", чтобы избавиться от «(пусто)». И удалите столбец "ForSort" из копии сводной таблицы, если вам это больше не нужно.

0

просто выделите целые строки B и C вместе, щелкните правой кнопкой мыши и выберите "Удалить". Из приведенных вариантов выберите "Весь столбец". Это избавит от пустых строк B и C и сместит D (1-3), чтобы появиться в B (1-3), рядом со строкой A.

0

Если у вас есть фиксированные критерии удаления, вы можете написать макрос для этого. Найдите нужные столбцы и удалите их (скажем, столбец B):

columns("B:B").Select
Selection.Delete Shift:=xlToLeft
0

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

  • выделить все в Excel лист
  • копия
  • открыть блокнот
  • вставить в блокнот (это займет только "чистые данные", без форматирования)
  • выбрать все
  • копия
  • открытое слово
  • вставить в Word
  • заменить все двойные метки абзаца одинарными (от ^ p ^ p до ^ p)
  • повторите вышеупомянутый шаг, пока не замените все вхождения двойного абзаца
  • выбрать все
  • копия
  • открыть Excel
  • вставить в Excel

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