Hoppa till huvudinnehåll

Hur filtrerar man en lista och tar bort resten av dolda eller synliga rader i Excel?

För en filtrerad lista kan du behöva radera de dolda eller synliga raderna för att bara behålla användbara data. I den här artikeln visar vi metoder för att radera de dolda eller synliga raderna i en filtrerad lista i Excel.

Ta bort dolda rader i aktivt kalkylblad med VBA-kod
Ta bort synliga rader med filtrerad lista genom att markera alla synliga celler
Ta enkelt bort dolda eller synliga rader med filtrerad lista med Kutools för Excel


Ta bort dolda rader i aktivt kalkylblad med VBA-kod

Detta avsnitt visar VBA-kod för att radera dolda rader i aktivt ark. Gör så här.

1. Aktivera kalkylbladet du behöver för att radera dolda rader, tryck på andra + F11 samtidigt för att öppna Microsoft Visual Basic för applikationer fönster.

2. Klicka på i fönstret Microsoft Visual Basic for Applications Insert > Modulerna. Och sedan kopiera och klistra in nedanstående VBA-kod i modulfönstret.

VBA-kod: Ta bort dolda rader

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. tryck på F5 för att köra koden. Om det finns dolda rader i det aktiva arket, efter att koden har körts, dyker en dialogruta upp för att berätta hur många dolda rader som har raderats. Klicka på OK för att radera de dolda raderna. Se skärmdump:

doc ta bort vila 1

Annars får du följande dialogruta när du har kört koden.

doc ta bort vila 1

Anmärkningar: ovanstående VBA-kod kan inte bara ta bort dolda rader med filtrerad lista utan också ta bort dolda rader som du har gömt manuellt tidigare.


Ta bort synliga rader med filtrerad lista genom att välja alla synliga celler

Gör så här för att radera synliga rader med filtrerad lista.

1. Markera alla filtrerade rader och tryck på F5 nyckel för att öppna gå till dialogrutan och klicka sedan på Special knapp. Se skärmdump:

doc ta bort vila 1

2. I Gå till Special dialogrutan, kolla på Endast synliga celler och klicka sedan på OK knapp.

doc ta bort vila 1

3. Nu är alla synliga rader markerade, högerklicka på markeringen och klicka sedan på Radera rader.

doc ta bort vila 1

Hittills raderas alla synliga rader från den filtrerade listan.


Ta enkelt bort dolda eller synliga rader med filtrerad lista med Kutools för Excel

Ovanstående två metoder är kanske inte önskvärda lösningar för många Excel-användare, här introducerar vi dig ett praktiskt verktyg. Med Ta bort dolda (synliga) rader och kolumner nytta av Kutools för Excel, kan du enkelt ta bort dolda rader i valt intervall / ark, aktivt ark eller alla kalkylblad i Excel.

Innan du ansöker Kutools för ExcelBer ladda ner och installera det först.

1. Om du bara vill ta bort dolda eller synliga rader i en filtrerad lista, välj det filtrerade området manuellt och klicka sedan på Kutools > Radera > Ta bort dolda (synliga) rader och kolumner. Se skärmdump:

2. I Ta bort dolda (synliga) rader och kolumner dialogrutan, behåll I valt intervall valda i Titta in rullgardinsmeny (du kan välja andra alternativ efter behov), kolla rader alternativet i Radera typ avsnittet och i Detaljerad typ avsnitt, kolla Synliga rader or Dolda rader alternativ som du behöver. Och slutligen klicka på OK knapp.

3. Sedan dyker en dialogruta upp för att berätta hur många rader som har tagits bort, klicka på OK knapp.

  Om du vill ha en gratis provperiod (30 dagar) av det här verktyget, klicka för att ladda ner den, och gå sedan till för att tillämpa operationen enligt ovanstående steg.


Ta bort dolda eller synliga rader med filtrerad lista med Kutools för Excel

Bästa kontorsproduktivitetsverktyg

Populära funktioner: Hitta, markera eller identifiera dubbletter   |  Ta bort tomma rader   |  Kombinera kolumner eller celler utan att förlora data   |   Rund utan formel ...
Superuppslag: Flera kriterier VLookup    VLookup med flera värden  |   VSök över flera ark   |   Fuzzy Lookup ....
Avancerad rullgardinslista: Skapa snabbt en rullgardinslista   |  Beroende rullgardinslista   |  Flervals-rullgardinslista ....
Kolumnhanterare: Lägg till ett specifikt antal kolumner  |  Flytta kolumner  |  Växla synlighetsstatus för dolda kolumner  |  Jämför intervall och kolumner ...
Utvalda funktioner: Rutnätsfokus   |  Designvy   |   Stor formelbar    Arbetsbok & Bladhanterare   |  Resursbibliotek (Automatisk text)   |  Datumväljare   |  Kombinera arbetsblad   |  Kryptera/Dekryptera celler    Skicka e-postmeddelanden efter lista   |  Superfilter   |   Specialfilter (filtrera fet/kursiv/genomstruken...) ...
Topp 15 verktygssatser12 text verktyg (lägga till text, Ta bort tecken, ...)   |   50 + Diagram Typer (Gantt Chart, ...)   |   40+ Praktiskt Formler (Beräkna ålder baserat på födelsedag, ...)   |   19 Införande verktyg (Infoga QR-kod, Infoga bild från sökväg, ...)   |   12 Konvertering verktyg (Siffror till ord, Valutaväxling, ...)   |   7 Slå ihop och dela verktyg (Avancerade kombinera rader, Dela celler, ...)   |   ... och mer

Uppgradera dina Excel-färdigheter med Kutools för Excel och upplev effektivitet som aldrig förr. Kutools för Excel erbjuder över 300 avancerade funktioner för att öka produktiviteten och spara tid.  Klicka här för att få den funktion du behöver mest...

kte-flik 201905


Fliken Office ger ett flikgränssnitt till Office och gör ditt arbete mycket enklare

  • Aktivera flikredigering och läsning i Word, Excel, PowerPoint, Publisher, Access, Visio och Project.
  • Öppna och skapa flera dokument i nya flikar i samma fönster, snarare än i nya fönster.
  • Ökar din produktivitet med 50 % och minskar hundratals musklick för dig varje dag!
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