Перейти к основному содержанию

Как отфильтровать список и удалить остальные скрытые или видимые строки в Excel?

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

Удалить скрытые строки на активном листе с кодом VBA
Удалить видимые строки отфильтрованного списка с выделением всех видимых ячеек
Легко удаляйте скрытые или видимые строки отфильтрованного списка с помощью Kutools for Excel


Удалить скрытые строки на активном листе с кодом VBA

В этом разделе будет показан код VBA для удаления скрытых строк на активном листе. Пожалуйста, сделайте следующее.

1. Активируйте рабочий лист, который вам нужен для удаления скрытых строк, нажмите другой + F11 клавиши одновременно, чтобы открыть Microsoft Visual Basic для приложений окно.

2. В окне Microsoft Visual Basic для приложений щелкните Вставить > Модули. Затем скопируйте и вставьте приведенный ниже код VBA в окно модуля.

Код VBA: удалить скрытые строки

Sub RemoveHiddenRows()
	Dim xRow As Range
	Dim xRg As Range
	Dim xRows As Range
	On Error Resume Next
	Set xRows = Intersect(ActiveSheet.Range("A:A").EntireRow, ActiveSheet.UsedRange)
	If xRows Is Nothing Then Exit Sub
		For Each xRow In xRows.Columns(1).Cells
			If xRow.EntireRow.Hidden Then
				If xRg Is Nothing Then
					Set xRg = xRow
				Else
					Set xRg = Union(xRg, xRow)
				End If
			End If
		Next
		If Not xRg Is Nothing Then
			MsgBox xRg.Count & " hidden rows have been deleted", , "Kutools for Excel"
			xRg.EntireRow.Delete
		Else
			MsgBox "No hidden rows found", , "Kutools for Excel"
		End If
	End Sub

3. нажмите F5 ключ для запуска кода. Если на активном листе есть скрытые строки, после запуска кода появится диалоговое окно, в котором будет указано, сколько скрытых строк было удалено. Щелкните значок OK кнопку, чтобы удалить скрытые строки. Смотрите скриншот:

документ удалить остаток 1

В противном случае после запуска кода вы получите следующее диалоговое окно.

документ удалить остаток 1

Внимание: приведенный выше код VBA не только может удалять скрытые строки отфильтрованного списка, но также удалять скрытые строки, которые вы ранее скрывали вручную.


Удалить видимые строки отфильтрованного списка с выделением всех видимых ячеек.

Чтобы удалить видимые строки отфильтрованного списка, сделайте следующее.

1. Выберите все отфильтрованные строки и нажмите F5 , чтобы открыть Перейти к диалоговое окно, затем щелкните Особый кнопка. Смотрите скриншот:

документ удалить остаток 1

2. в Перейти к специальному диалоговое окно, проверьте Только видимые ячейки вариант, а затем щелкните OK .

документ удалить остаток 1

3. Теперь все видимые строки выделены, щелкните выделение правой кнопкой мыши и затем щелкните Удалить строки.

документ удалить остаток 1

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


Легко удаляйте скрытые или видимые строки отфильтрованного списка с помощью Kutools for Excel

Вышеупомянутые два метода могут не быть желанными решениями для многих пользователей Excel, здесь мы представляем вам удобный инструмент. Для Удалить скрытые (видимые) строки и столбцы полезности Kutools for Excel, вы можете легко удалить скрытые строки в выбранном диапазоне / листах, активном листе или всех листах в Excel.

Перед применением Kutools for Excel, Пожалуйста, сначала скачайте и установите.

1. Если вы хотите удалить только скрытые или видимые строки отфильтрованного списка, выберите отфильтрованный диапазон вручную, а затем нажмите Кутулс > Удалить > Удалить скрытые (видимые) строки и столбцы. Смотрите скриншот:

2. в Удалить скрытые (видимые) строки и столбец диалоговое окно, оставьте В выбранном диапазоне выбранный в Заглянуть раскрывающийся список (вы можете выбрать другие варианты по своему усмотрению), отметьте Ряды вариант в Удалить тип раздел, а в Подробный тип раздел, проверка Видимые строки or Скрытые строки вариант как вам нужно. И, наконец, нажмите кнопку OK .

3. Затем появится диалоговое окно, в котором указано, сколько строк было удалено. Щелкните значок OK .

  Если вы хотите получить бесплатную (30-дневную) пробную версию этой утилиты, пожалуйста, нажмите, чтобы загрузить это, а затем перейдите к применению операции в соответствии с указанными выше шагами.


Удалите скрытые или видимые строки отфильтрованного списка с помощью Kutools for Excel

Лучшие инструменты для офисной работы

Популярные опции: Найдите, выделите или определите дубликаты   |  Удалить пустые строки   |  Объедините столбцы или ячейки без потери данных   |   Раунд без формулы ...
Супер поиск: Множественный критерий VLookup    VLookup с несколькими значениями  |   VLookup по нескольким листам   |   Нечеткий поиск ....
Расширенный раскрывающийся список: Быстрое создание раскрывающегося списка   |  Зависимый раскрывающийся список   |  Выпадающий список с множественным выбором ....
Менеджер столбцов: Добавить определенное количество столбцов  |  Переместить столбцы  |  Переключить статус видимости скрытых столбцов  |  Сравнить диапазоны и столбцы ...
Рекомендуемые функции: Сетка Фокус   |  Просмотр дизайна   |   Большой Формулный Бар    Менеджер книг и листов   |  Библиотека ресурсов (Авто текст)   |  Выбор даты   |  Комбинировать листы   |  Шифровать/дешифровать ячейки    Отправлять электронные письма по списку   |  Суперфильтр   |   Специальный фильтр (фильтровать жирным шрифтом/курсивом/зачеркиванием...) ...
15 лучших наборов инструментов12 Текст Инструменты (Добавить текст, Удалить символы, ...)   |   50+ График Тип (Диаграмма Ганта, ...)   |   40+ Практических Формулы (Рассчитать возраст по дню рождения, ...)   |   19 Вносимые Инструменты (Вставить QR-код, Вставить изображение из пути, ...)   |   12 Конверсия Инструменты (Числа в слова, Конверсия валюты, ...)   |   7 Слияние и разделение Инструменты (Расширенные ряды комбинирования, Разделить клетки, ...)   |   ... и более

Улучшите свои навыки работы с Excel с помощью Kutools for Excel и почувствуйте эффективность, как никогда раньше. Kutools for Excel предлагает более 300 расширенных функций для повышения производительности и экономии времени.  Нажмите здесь, чтобы получить функцию, которая вам нужна больше всего...

вкладка kte 201905


Вкладка Office: интерфейс с вкладками в Office и упрощение работы

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!
Comments (7)
No ratings yet. Be the first to rate!
This comment was minimized by the moderator on the site
Hi this VBA code is awesome useful.
This comment was minimized by the moderator on the site
Thanks for the info. This has been instructive. Please is there a way to filter and delete for specific numbers in rows of up to 1 million? Can the code above be modified to do so?
This comment was minimized by the moderator on the site
Hi,
Sorry did not test the code in such huge row data. Maybe you can make a copy of your data and test if the code can work.
This comment was minimized by the moderator on the site
VBA code to Delete hidden rows worked perfectly with no fiddling. THANK YOU!!
This comment was minimized by the moderator on the site
Feedback re: the macro for hidden row deletions - this takes too long to run on 900k rows to be useful. 2+ hours on an OC'd Threadripper 1950X and still running (had to end task). Any way to optimize it to use multiple cores or is this a VBA limitation?
This comment was minimized by the moderator on the site
Hi,
The code has been optimized. Please have a try. Thank you for your comment.

Sub RemoveHiddenRows()
Dim xFlag As Boolean
Dim xStr, xTemp As String
Dim xDiv, xMod As Long
Dim I, xCount, xRows As Long
Dim xRg, xCell, xDRg As Range
Dim xArr() As String
On Error Resume Next
Application.ScreenUpdating = False
Application.EnableEvents = False
Set xRg = Intersect(ActiveSheet.Range("A:A").EntireRow, ActiveSheet.UsedRange)
If xRg Is Nothing Then Exit Sub
xRows = xRg.Rows.Count
Set xRg = xRg(1)
xFlag = True
xTemp = ""
xCount = 0
For I = 1 To xRows
Set xCell = xRg.Offset(I - 1, 0)
Do While xFlag
If xCell.EntireRow.Hidden Then
xStr = xCell.Address
xFlag = False
Else
GoTo Ctn
End If
Loop
If xCell.EntireRow.Hidden Then
xTemp = xStr & "," & xCell.Address
End If
If Len(xTemp) > 171 Then
xCount = xCount + 1
ReDim Preserve xArr(1 To xCount)
xArr(xCount) = xStr
xStr = xCell.Address
Else
xStr = xTemp
End If
Ctn:
Next
xCount = xCount + 1
ReDim Preserve xArr(1 To xCount)
xArr(xCount) = xStr
For I = xCount To 1 Step -1
If I = 1 Then
xStr = Mid(xArr(I), InStr(xArr(I), ",") + 1, Len(xArr(I)) - InStr(xArr(I), ","))
Else
xStr = xArr(I)
End If
If xDRg Is Nothing Then
Set xDRg = Range(xStr)
Else
Set xDRg = Union(xDRg, Range(xStr))
End If
If (Len(xDRg.Address) >= 244) Or (xCount = 1) Then
xDRg.EntireRow.Delete
Set xDRg = Nothing
End If
Next
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
This comment was minimized by the moderator on the site
Awesome, thank you! Will review at my next opportunity / need for this and reply back.
There are no comments posted here yet
Please leave your comments in English
Posting as Guest
×
Rate this post:
0   Characters
Suggested Locations