Denna handledning kommer att visa olika sätt att ta bort rader och kolumner i Excel med hjälp av VBA.
Ta bort hela raden eller kolumnen
För att ta bort en hel rad i VBA använder du den här raden i koden:
Rows(1).Delete
Notera att vi använder Delete-metoden för att ta bort en rad.
Istället för att hänvisa till Rows-objektet kan du hänvisa till rader baserat på deras Range-objekt med EntireRow:
Range("a1").EntireRow.Delete
För att ta bort en hel kolumn använder du dessa kodrader:
Columns(1).Delete
Range("a1").EntireColumn.Delete
Släpp flera rader eller kolumner
Med samma logik kan du också radera flera rader på en gång:
Rows("1:3").Delete
eller kolumner:
Columns("A:C").Delete
Observera att vi här hänvisar till specifika rader- och kolumnnummer/bokstäver som är omgärdade av citattecken.
Självklart kan du också referera till EntireRow i ett intervall:
Range("a1:a10").EntireRow.Delete
Observera: Exemplen nedan visar endast radering av rader, men som du kan se ovan är syntaxen praktiskt taget identisk för att radera kolumner.
Ta bort tomma rader
Detta exempel tar bort en rad om hela raden är tom:
Sub DeleteRows_EntireRowBlank()Dim cell As RangeFor Each cell In Range("b2:b20") If Application.WorksheetFunction.CountA(cell.EntireRow) = 0 Then cell.EntireRow.Delete End IfNext cellEnd Sub
Det använder sig av Excel-arbetsbladfunktionen: COUNTA.
Ta bort rad om cell är tom
Detta raderar en rad om en specifik kolumn i raden är tom (i det här fallet kolumn B):
Range("b3:b20").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Ta bort rad baserat på cellvärde
Detta kommer att gå igenom ett intervall och radera rader om ett visst cellvärde i raden säger ”ta bort”.
Sub DeleteRowswithSpecificValue()Dim cell As RangeFor Each cell In Range("b2:b20") If cell.Value = "delete" Then cell.EntireRow.Delete End IfNext cellEnd Sub
Mer Delete Row and Column Examples
Delete Duplicate Rows
Den här koden raderar alla dubbla rader i ett intervall:
Range("b2:c100").RemoveDuplicates Columns:=2
Märk väl att vi har satt Columns:=2. Detta säger till VBA att kontrollera både de två första datakolumnerna när man överväger om rader är dubbletter. En dubblett hittas endast när båda kolumnerna har dubbla värden.
Om vi hade ställt in detta på 1 skulle endast den första raden ha kontrollerats för dubbla värden.
Ta bort tabellrader
Denna kod tar bort den andra raden i en tabell genom att hänvisa till ListObjects.
ThisWorkbook.Sheets("Sheet1").ListObjects("list1").ListRows(2).Delete
Ta bort filtrerade rader
För att ta bort endast rader som är synliga efter filtrering:
Range("b3:b20").SpecialCells(xlCellTypeVisible).EntireRow.Delete
Ta bort rader i intervallet
Denna kod tar bort alla rader i intervallet:
Range("a1:a10").EntireRow.Delete
Ta bort valda rader
Denna kod tar bort alla valda rader:
Selection.EntireRow.Delete
Ta bort sista raden
Detta tar bort den senast använda raden i kolumn B:
Cells(Rows.Count, 2).End(xlUp).EntireRow.Delete
Om du ändrar 2 till 1 kan du ta bort den senast använda raden i kolumn A, osv.:
Cells(Rows.Count, 1).End(xlUp).EntireRow.Delete
Släck kolumner efter nummer
För att radera en kolumn efter dess nummer använder du en kod som denna:
Columns (2).Delete