Ta bort rad med VBA (14 sätt)

  • Dela Detta
Hugh West

Om du letar efter några av de enklaste sätten att radera rader med hjälp av VBA då är du på rätt plats.

Låt oss gå in på huvudartikeln.

Ladda ner arbetsboken

VBA Radera rad.xlsm

14 sätt att ta bort en rad med VBA

Här har jag tre datatabeller för att visa hur man tar bort rader med hjälp av VBA Den första tabellen innehåller några Produkter av ett företag och deras Storlekar , Priser .

Den andra har en del Produktkoder och deras motsvarande Produktstorlekar och Priser

Och den sista innehåller några Projektnamn och deras respektive Startdatum och Kostnader .

För att skapa artikeln har jag använt mig av Microsoft Excel 365 versionen, men du kan använda andra versioner när det passar dig.

Metod-1: Ta bort en enda rad med VBA

Låt oss säga att du vill ta bort raden som innehåller Produkt Sko 1, och för att ta bort denna enda rad kan du följa den här metoden.

Step-01 :

➤Gå till Utvecklare Fliken>> Visual Basic Alternativ

Därefter är det Redigerare för Visual Basic kommer att öppnas.

➤Gå till Infoga Fliken>> Modul Alternativ

Efter detta kommer en Modul kommer att skapas.

Step-02 :

➤Skriv följande kod

 Sub dltrow1() Arbetsblad("Single").Rows(7).EntireRow.Delete End Sub 

Här, "Enkel" är arbetsbladets namn och Rader(7) väljer radnumret.

.EntireRow.Delete raderar hela raden 7.

➤Press F5

Resultat :

På detta sätt raderar du raden som innehåller Produkt namn Sko 1 .

Läs mer: Hur man tar bort rader i Excel: 7 metoder

Metod-2: Ta bort flera rader med hjälp av VBA

Om du vill radera flera rader, t.ex. de rader som innehåller Produkt namn Sko1 , Sko2, och Sko3 kan du följa detta VBA kod.

Step-01 :

➤Följ Step-01 Metod-1

 Sub dltrow2() Rows(13).EntireRow.Delete Rows(10).EntireRow.Delete Rows(7).EntireRow.Delete End Sub 

Här kommer radnumren 13, 10 och 7 att raderas och när du skriver radnumren i serie måste du skriva från det sista radnumret till det första radnumret på följande sätt.

Annars kommer de återstående raderna under denna rad att flyttas upp en rad efter att den första raden, t.ex. rad 7, har tagits bort, vilket innebär att rad 10 blir rad 9 och rad 13 blir rad 12. Av denna anledning kommer du inte att kunna ta bort de rätta raderna.

➤Press F5

Resultat :

Därefter raderar du de rader som innehåller Produkt namn Sko 1 , Sko2, och Sko3 .

Läs mer: Ta bort flera rader i Excel (3 metoder)

Metod-3: Ta bort en rad genom att välja

Här ska jag visa hur man raderar en rad i förhållande till en aktiv cell i raden.

Step-01 :

➤Följ Step-01 Metod-1

 Sub dltrow3() ActiveCell.EntireRow.Delete End Sub 

Den raderar raden med en aktiv cell.

➤Spara koden.

Step-02 :

➤Välj en cell i raden som du vill ta bort (här har jag valt cell B7 )

➤Gå till Utvecklare Fliken>> Makroer Alternativ

Efter det kan den Makro Guiden öppnas.

➤Välj den Makronamn dltrow3 och tryck på Kör

Resultat :

Därefter raderar du raden som innehåller Produkt namn Sko 1 .

Metod-4: Ta bort alla rader i urvalet

Om du vill ta bort alla rader i ett urval kan du följa den här metoden.

Step-01 :

➤Följ Step-01 Metod-1

 Sub dltrow4() Selection.EntireRow.Delete End Sub 

Det raderar alla rader i urvalet.

➤Spara koden.

Step-02 :

➤ Välj det intervall av rader som du vill ta bort (här har jag valt intervallet B7:D9 )

➤Gå till Utvecklare Fliken>> Makroer Alternativ

Efter detta kan Makro Guiden öppnas.

➤Välj den Makronamn dltrow4 och tryck på Kör

Resultat :

Därefter raderar du de rader som innehåller Produkt namn Sko 1 , Jacka1, och Jacka2 .

Läs mer: Hur man tar bort valda rader i Excel (8 metoder)

Metod-5: Ta bort en rad om någon cell är tom

Här har jag en tom cell som är B9 (jag har tagit bort värdet från denna cell för denna metod), och med hjälp av en VBA kod jag kommer att radera raden med B9 cell.

Step-01 :

➤Följ Step-01 Metod-1

 Sub dltrow5() Range("B5:D13").SpecialCells(xlCellTypeBlanks).EntireRow.Delete End Sub 

Det raderar alla rader i intervallet "B5:D13" som har en tom cell.

➤Press F5

Resultat :

Därefter kan du ta bort raden med den tomma cellen.

Läs mer: Hur man tar bort tomma rader i Excel (11 metoder)

Metod-6: Ta bort en rad om hela raden är tom

Här har jag en tom cell som är B9 (jag har tagit bort värdena för denna metod) och en tom rad som är rad 12 (jag har tagit bort värdena för denna metod), och med hjälp av en VBA kod och COUNTA-funktionen Jag raderar den tomma raden.

Step-01 :

➤Följ Step-01 Metod-1

 Sub dltrow6() Dim cell As Range For Each cell In Range("B5:D13") If Application.WorksheetFunction.CountA(cell.EntireRow) = 0 Then cell.EntireRow.Delete End If Next cell End Sub 

"B5:D13" är dataområdet och FÖR slingan kommer att fungera för varje cell i detta intervall.

CountA(cell.EntireRow) returnerar antalet celler som inte är tomma och när det blir 0 raderas raden.

➤Press F5

Resultat :

Därefter kan du ta bort den tomma raden, men det kommer inte att ta bort någon rad som inte har alla celler i denna rad tomma.

Läs mer: Hur du använder VBA för att ta bort tomma rader i Excel

Metod-7: Ta bort varje n:e rad

Du kan radera var n:e rad (i det här fallet var tredje rad) genom att följa den här metoden.

Step-01 :

➤Följ Step-01 Metod-1

 Sub dltrow7() rc = Range("B5:D13").Rows.Count For i = rc To 1 Step -3 Range("B5:D13").Rows(i).EntireRow.Delete Next i End Sub 

"B5:D13" är dataområdet och rc kommer att ge det totala antalet rader i detta intervall, vilket är 9 .

Här kan FÖR slingan startar från den sista raden som är rc eller . 9 i det här fallet och slutar med den första raden.

Steg -3 kommer att hjälpa till att radera alla 3:e rad inom detta område.

➤Press F5

Resultat :

Därefter raderar du de rader som innehåller Produkt namn Sko 1 , Sko2, och Sko3 .

Läs mer: Ta bort varje n:e rad i Excel (6 enklaste sätt)

Liknande läsningar:

  • Ta bort markerade rader med Excel VBA (en stegvis vägledning)
  • Ta bort oanvända rader i Excel (8 enkla sätt)
  • Ta bort dolda rader i Excel (3 metoder)
  • Ta bort oändliga rader i Excel (5 enkla sätt)
  • Ta bort rader i Excel som fortsätter i all evighet (4 enkla sätt)

Metod-8: Ta bort rad baserat på cellvärde

I den här metoden raderar jag den rad som har ett visst värde. Skjorta 2 .

Step-01 :

➤Följ Step-01 Metod-1

 Sub dltrow8() Dim cell As Range For Each cell In Range("B5:D13") If cell.Value = "Shirt 2" Then cell.EntireRow.Delete End If Next cell End Sub 

"B5:D13" är dataområdet och FÖR slingan kommer att fungera för varje cell i intervallet.

Om någon cell i en rad innehåller värdet "Skjorta 2" tas raden bort.

➤Press F5

Resultat :

På detta sätt raderar du raden som innehåller Produkt namn Skjorta 2 .

Läs mer: VBA-makro för att ta bort raden om cellen innehåller ett värde i Excel (2 metoder)

Metod-9: Ta bort dubbla rader

Här har jag två rader med en Produktkod 97375 Jag vill ta bort en av dessa rader som är markerade med en röd ruta nedan.

Step-01 :

➤Följ Step-01 Metod-1

 Sub dltrow9() Range("B5:D13").RemoveDuplicates Columns:=1 End Sub 

Här, "B5:D13" är dataområdet och Kolumner:=1 innebär att den söker efter dubbla värden endast i en kolumn, nämligen startkolumnen. Kolumn B men om du vill söka i andra kolumner kan du använda detta nummer enligt dina behov.

➤Press F5

Resultat :

Därefter kan du ta bort den rad som liknar en annan rad.

Läs mer: Ta bort dubbla rader i Excel med VBA (8 effektiva sätt)

Metod-10: Ta bort rader i en tabell

Antag att du har följande tabell vars namn är Tabell1 och nu vill du ta bort rad nummer 6 i denna tabell. För att göra detta kan du följa den här metoden.

Step-01 :

➤Följ Step-01 Metod-1

 Sub dltrow10() ActiveWorkbook.Worksheets("Table").ListObjects("Table1").ListRows(6).Delete End Sub 

Här, "Bord" är arkets namn, "Table1" är tabellens namn och 6 är radnumret i den tabell som du vill ta bort.

➤Press F5

Resultat :

På detta sätt raderar du den önskade raden i tabellen.

Läs mer: Ta bort dubbla rader baserat på en kolumn med Excel VBA

Metod-11: Ta bort synliga rader efter filtrering

Här har jag en datatabell som är filtrerad med hjälp av Pris kolumnen för värden som är större än $1,500.00 och jag vill ta bort alla synliga rader efter filtrering.

Step-01 :

➤Följ Step-01 Metod-1

 Sub dltrow11() Range("B5:D13").SpecialCells(xlCellTypeVisible).EntireRow.Delete End Sub 

Här, "B5:D13" är dataområdet.

➤Press F5

Nu raderas alla synliga rader efter filtreringen. Du kan nu ta tillbaka de dolda raderna genom att välja Filter tecken i den Pris kolumn.

➤Klicka på Välj alla alternativ

➤Press OK

Resultat :

Slutligen får du tillbaka de dolda raderna i datatabellen.

Läs mer: Filtrera och ta bort rader med VBA i Excel (2 metoder)

Metod-12: Ta bort raden baserat på den sista aktiva cellen

Här är min sista aktiva cell cell B13 och jag vill ta bort den sista aktiva cellen i följande datatabell.

Step-01 :

➤Följ Step-01 Metod-1

 Sub dltrow12() Cells(Rows.Count, 2).End(xlUp).EntireRow.Delete End Sub 

Här, 2 betyder Kolumn B där jag har min aktiva cell, du kan ändra numret efter dina behov.

➤Press F5

Resultat :

På detta sätt raderar du den sista aktiva raden.

Läs mer: Excel VBA-kod för att ta bort rader baserat på flera cellvärden (3 kriterier)

Metod-13: Ta bort rader som har strängar

Anta att du vill ta bort de rader som har en sträng, och för att göra detta kan du följa den här metoden.

Step-01 :

➤Följ Step-01 Metod-1

 Sub dltrow13() Dim FirstRow As Long Dim LastRow As Long Dim FirstColumn As Long Dim LastColumn As Long Dim sheet As Worksheet Dim Rng As Range FirstRow = 5 FirstColumn = 2 Set sheet = Worksheets("String") With sheet With .Cells LastRow = .Find(What:="*", LookIn:=xlFormulas, _ LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row LastColumn = .Find(What:="*",LookIn:=xlFormulas, _ LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column End With Set Rng = .Range(.Cells(FirstRow, FirstColumn), .Cells(LastRow, LastColumn)) End With On Error Resume Next Rng.SpecialCells(xlCellTypeConstants, xlTextValues).EntireRow.Delete End Sub 

Här, "sträng" är arkets namn, den första raden i detta datarutbud är 5 och startkolonnnumret är 2

Med kan du ange ett objekt eller en användardefinierad typ en gång för en hel serie uttalanden.

Vid fel Fortsätt nästa anger att när ett körtidsfel inträffar, går kontrollen till det uttalande som följer efter det uttalande där felet inträffar.

LastRow och LastColumn återger den sista raden och kolumnen i dataområdet.

SpecialCells(xlCellTypeConstants, xlTextValues) väljer de rader som har textvärden i intervallet.

➤Press F5

Resultat :

Därefter raderas de rader som har en textsträng.

Läs mer: Excel-genväg för att ta bort rader (med bonusteknik)

Metod-14: Ta bort rader baserat på datum

Här raderar jag de rader som har ett speciellt datum. 11/12/2021 (mm/dd/åååå) i denna metod med hjälp av DATEVALUE-funktionen .

Step-01 :

➤Följ Step-01 Metod-1

 Sub dltrow14() Dim FirstRow As Long Dim LastRow As Long Dim CriteriaColumn As Long Dim myDate As Date Dim sheet As Worksheet Dim i As Long Dim myRowsWithDate As Range FirstRow = 5 CriteriaColumn = 3 myDate = DateValue("11/12/2021") Set sheet = Worksheets("Date") With sheet LastRow = .Cells.Find(What:="*", LookIn:=xlFormulas, LookAt:=xlPart, _ SearchOrder:=xlByRows,SearchDirection:=xlPrevious).Row For i = LastRow To FirstRow Step -1 With .Cells(i, CriteriaColumn) If .Value = myDate Then If Not myRowsWithDate Is Nothing Then Set myRowsWithDate = Union(myRowsWithDate, .Cells) Else Set myRowsWithDate = .Cells End If End If End If End WithNext i End With If Not myRowsWithDate Is Nothing Then myRowsWithDate.EntireRow.Delete End Sub 

Här, "Datum" är arkets namn, den första raden i detta datarutbud är 5 och antalet kriterier i kolumnen (vilken kolumn som har datum) är 3 .

Med kan du ange ett objekt eller en användardefinierad typ en gång för en hel serie uttalanden.

Vid fel Fortsätt nästa anger att när ett körtidsfel inträffar, går kontrollen till det uttalande som följer efter det uttalande där felet inträffar.

LastRow returnerar den sista raden i datafältet och här är det FÖR slingan startar från den sista raden som är LastRow eller . 6 i det här fallet, och slutar med den första raden.

DATEVALUE omvandlar textdatum till ett värde.

Här, Unionen återger föreningen av flera intervall som motsvarar de celler som har datumet 11/12/2021 och slutligen raderas områdena.

➤Press F5

Resultat :

Därefter raderar du de rader som har ett visst datum för 11/12/2021 .

Relaterat innehåll: Excel VBA för att ta bort rader med specifika data (9 exempel)

Övningssektionen

För att du ska kunna öva på egen hand har vi tillhandahållit en Praktik som nedan i ett ark som heter Praktik . Gör det själv.

Slutsats

I den här artikeln har jag försökt att täcka de enklaste sätten att använda VBA effektivt för att ta bort rader. Hoppas att du tycker att det är användbart. Om du har några förslag eller frågor, dela dem gärna med dig i kommentarsfältet.

Hugh West är en mycket erfaren Excel-tränare och analytiker med över 10 års erfarenhet i branschen. Han har en kandidatexamen i redovisning och ekonomi och en magisterexamen i företagsekonomi. Hugh har en passion för undervisning och har utvecklat ett unikt undervisningssätt som är lätt att följa och förstå. Hans expertkunskap om Excel har hjälpt tusentals studenter och yrkesverksamma över hela världen att förbättra sina färdigheter och utmärka sig i sina karriärer. Genom sin blogg delar Hugh med sig av sin kunskap med världen, och erbjuder gratis Excel-handledning och onlineutbildning för att hjälpa individer och företag att nå sin fulla potential.