Hur man tar bort hela raden i Excel med hjälp av VBA (exempel)

Att lägga till och ta bort rader är en del av vanliga vanliga uppgifter när du arbetar med Excel.

Medan du enkelt kan göra detta från själva kalkylbladet, kan du ibland använda VBA -rutten för att radera rader i Excel. Dessa kan vara att radera en specifik rad, flera rader i urvalet, radera alternativa rader eller de som har ett visst värde i den.

I den här självstudien visar jag dig hur du tar bort rader i Excel med VBA (flera scenarier).

Så låt oss komma igång!

Ta bort en hel rad med VBA

Om du vill ta bort en hel rad i Excel med VBA måste du använda metoden EntireRow.Delete.

Om du till exempel vill radera hela den första raden i ett kalkylblad kan du använda koden nedan:

Sub DeleteEntireRow () Rader (1) .EntireRow.Delete End Sub

Ovanstående kod anger först raden som måste raderas (vilket görs genom att ange numret inom parentes) och använder sedan metoden EntireRow.Delete för att radera den.

Du kan också radera flera rader genom att ange dessa rader i koden.

Till exempel kommer nedanstående kod att radera rad nummer 1, 5 och 9 i kalkylbladet:

Sub DeleteEntireRow () Rader (9) .EntireRow.Delete Rows (5) .EntireRow.Delete Rows (1) .EntireRow.Delete End Sub

Ovanstående kod använder samma logik, där den anger radnumren och Excel tar bort dessa rader en efter en.

VIKTIGT: När du tar bort rader med något som liknar koden ovan, kom ihåg att börja ta bort från botten och sedan gå upp. Till exempel, om du börjar överst och tar bort rad 1 först, flyttas alla rader nedanför den en rad upp och numreringen blir av (eftersom rad 5 skulle bli rad 4 och så vidare)

Radera alla rader i markeringen

Om du vill radera alla rader i ett valt cellområde kan du använda VBA -makrokoden nedan:

Sub DeleteEntireRow () Selection.EntireRow.Delete End Sub

Koden ovan gäller EntireRow.Delete -metoden för hela urvalet.

Ta bort alternativa rader (eller radera var tredje/fjärde/n: e rad)

Ibland kan du få en datadump där varannan rad (eller tredje, fjärde eller n: e raden) är värdelös och måste raderas.

Jag brukade arbeta med finansiella data där varannan rad var tom och måste raderas.

Detta är den typ av scenario där VBA verkligen lyser.

Nedan visas VBA -koden som går igenom alla rader i urvalet och tar bort varannan rad:

Sub DeleteAlternateRows () RCount = Selection.Rows.Count For i = RCount To 1 Step -2 Selection.Rows (i) .EntireRow.Delete Next i End Sub

Låt mig förklara hur denna VBA -kod fungerar.

Först har jag använt en variabel RCount för att få det totala antalet rader i urvalet.

Sedan har jag använt en For Next loop för att köra detta så många gånger som många rader det finns. Om det till exempel finns 12 rader kommer den här slingan att köras från 12 till 1 (dvs 12 gånger). Det är viktigt att köra detta från den sista raden i markeringen till den första eftersom vi inte vill att radnumren ska ändras när en rad raderas.

Steg -2 används också eftersom vi måste ta bort varannan rad (från botten till toppen). Om du vill ta bort var tredje rad kan du använda -3.

Inom VBA -slingan har jag använt metoden Selection.Rows (i) .EntireRow.Delete för att ta bort varje alternativ rad.

Ta bort tomma rader med VBA

Du kan också använda metoden EntireRow.Delete för att radera alla tomma rader.

Nedan finns VBA -koden som väljer tomma celler i den valda datamängden och tar bort hela raden.

Sub DeleteBlankRows () Selection.SpecialCells (xlCellTypeBlanks) .EntireRow.Delete End Sub

Ovanstående kod använder egenskapen SpecialCells för att markera och ta bort alla tomma celler. Detta är samma metod som också låter oss använda dialogrutan "Gå till special" för att markera alla tomma celler.

När dessa tomma celler har identifierats med SpecialCell raderas dessa sedan med metoden EntireRow.Delete.

Obs! Denna metod väljer celler som är tomma och inte kontrollerar om hela raden är tom eller inte. Så om någon cell är tom på en rad, skulle detta fortfarande radera hela raden.

Ta bort rader med ett specifikt ord/värde

Du kan också använda en enkel VBA -kod för att gå igenom varje cell i det valda intervallet och radera alla rader där en cell innehåller en specifik text eller värde.

Anta till exempel att du har en datamängd och jag vill ta bort alla celler som har texten Skrivare i kolumn 2 i markeringen.

Nedan är koden som gör detta:

Sub DeleteRowswithSpecificValue () För i = Selection.Rows.Count till 1 Steg -1 Om Cells (i, 2) .Value = "Printer" Sedan Cells (i, 2) .EntireRow.Delete End Om Next i End Sub

Ovanstående kod räknar först det totala antalet rader i urvalet. Detta kommer att se till att slingan körs bara dessa många gånger. Den använder sedan "For Next loop" för att gå igenom alla celler i kolumn 2.

IF THEN ELSE -satsen används sedan för att kontrollera värdet i varje cell i kolumn 2. Och om värdet/texten matchar den angivna texten (vilket är "Skrivare" i detta exempel).

I det här exemplet har jag kontrollerat om texten matchar en specifik sträng eller inte. Du kan också göra detta med värden. Du kan till exempel ta bort alla rader där försäljningsvärdet är mindre än 1000 eller mer än 1000.

Obs: En viktig sak att notera här är att slingan går från Selection.Rows.Count till 1 för att säkerställa att när en rad raderas påverkar det inte raderna ovanför den.

Så här använder du denna VBA -kod

Låt mig nu visa dig hur du använder alla koder som nämns i denna handledning för att radera hela raden.

Du måste kopiera och klistra in dessa koder i en modul i Excel VB Editor. När du har kopierat dessa koder kan du köra makrokoderna.

Nedan följer stegen för att kopiera och klistra in dessa VBA -koder i en modul:

  1. Håll ned ALT -tangenten och tryck på F11 -tangenten (eller Funktion + Alternativ + F11 i Mac). Detta öppnar VB Editor
  2. I VB Editor har du projektutforskaren till vänster. Om du inte ser det, gå till alternativet Visa och klicka sedan på Project Explorer.
  3. Högerklicka på ett objekt i Project Explorer (för arbetsboken där du vill köra koden).
  4. Gå till Infoga och klicka sedan på Modul. Detta kommer att infoga en ny modul för arbetsboken
  5. Kopiera och klistra in ovanstående koder i modulen.

Och för att köra dessa koder kan du placera markören var som helst i koden (som du vill köra) och trycka på F5 -tangenten (eller klicka på den gröna triangeln i VBA -verktygsfältet).

Jag har också skrivit en detaljerad handledning om olika sätt att köra VBA -makrokoder i Excel.

Om du behöver använda någon av dessa koder ganska ofta kan du också överväga att lägga till dem i Personal Macro Workbook och sedan till QAT. På så sätt kommer koden att vara tillgänglig för dig i någon av dina arbetsböcker med ett enda klick.

Så det här var några VBA -koder som du kan använda för att radera hela rader i Excel (i olika scenarier). Samma logik kan också tillämpas om du vill radera kolumner istället för rader (med motsvarande justering i kodexemplen).

Hoppas du tyckte att denna handledning var användbar!

Du kommer att bidra till utvecklingen av webbplatsen, dela sidan med dina vänner

wave wave wave wave wave