VBA Slet hele række eller kolonne – Automatiser ExcelAutomatiser Excel

Denne vejledning viser forskellige måder at slette rækker og kolonner i Excel på ved hjælp af VBA.

Slet hele række eller kolonne

For at slette en hel række i VBA skal du bruge denne kodelinje:

Rows(1).Delete

Mærk, at vi bruger Delete-metoden til at slette en række.

I stedet for at henvise til Rows-objektet kan du henvise til rækker baseret på deres Range-objekt med EntireRow:

Range("a1").EntireRow.Delete

Sådan kan du også slette en hel kolonne ved at bruge disse kodelinjer:

Columns(1).Delete
Range("a1").EntireColumn.Delete

Slet flere rækker eller kolonner

Med samme logik kan du også slette flere rækker på én gang:

Rows("1:3").Delete

eller kolonner:

Columns("A:C").Delete

Bemærk, at vi her henviser til de specifikke række- og kolonnumre/bogstaver omgivet af anførselstegn.

Selvfølgelig kan du også referere til EntireRow i et område:

Range("a1:a10").EntireRow.Delete

Bemærk: Eksemplerne nedenfor viser kun sletning af rækker, men som du kan se ovenfor, er syntaksen stort set identisk med sletning af kolonner.

Slet tomme / tomme rækker

Dette eksempel sletter en række, hvis hele rækken er 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 gør brug af Excel-arbejdsarkfunktionen: COUNTA.

Slet række, hvis celle er tom

Dette vil slette en række, hvis en bestemt kolonne i den pågældende række er tom (i dette tilfælde kolonne B):

Range("b3:b20").SpecialCells(xlCellTypeBlanks).EntireRow.Delete

Slet række baseret på celleværdi

Dette vil sløjfe gennem et område og slette rækker, hvis en bestemt celleværdi i den pågældende række siger “slet”.

Sub DeleteRowswithSpecificValue()Dim cell As RangeFor Each cell In Range("b2:b20") If cell.Value = "delete" Then cell.EntireRow.Delete End IfNext cellEnd Sub

Flere eksempler på sletning af rækker og kolonner

Slet dobbelte rækker

Denne kode sletter alle dobbelte rækker i et område:

Range("b2:c100").RemoveDuplicates Columns:=2

Bemærk, at vi har indstillet Kolonner:=2. Dette fortæller VBA, at det skal kontrollere både de to første datakolonner, når det undersøges, om der er tale om dublerede rækker. En dublet findes kun, når begge kolonner har dubletværdier.

Hvis vi havde indstillet dette til 1, ville kun den første række være blevet kontrolleret for dubletværdier.

Slet tabelrækker

Denne kode sletter den anden række i en tabel ved at henvise til ListObjects.

ThisWorkbook.Sheets("Sheet1").ListObjects("list1").ListRows(2).Delete

Slet filtrerede rækker

For kun at slette rækker, der er synlige efter filtrering:

Range("b3:b20").SpecialCells(xlCellTypeVisible).EntireRow.Delete

Slet rækker i område

Denne kode sletter alle rækker i området:

Range("a1:a10").EntireRow.Delete

Slet valgte rækker

Denne kode sletter alle valgte rækker:

Selection.EntireRow.Delete

Slet sidste række

Denne kode sletter den sidst anvendte række i kolonne B:

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

Gennem at ændre 2 til 1, kan du slette den sidst anvendte række i kolonne A, osv.:

Cells(Rows.Count, 1).End(xlUp).EntireRow.Delete

Slet kolonner efter nummer

For at slette en kolonne efter dens nummer skal du bruge en kode som denne:

Columns (2).Delete

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.