Radera en rad med VBA

i Excel kan du radera en rad genom att högerklicka på radnumret och sedan välja Radera. Men när du vill ta bort rader med mer sofistikerade metoder måste du använda VBA. Det låter dig ta bort rader på många olika sätt.

ta bort en specifik rad

det mest grundläggande sättet att ta bort en rad i VBA är att använda radnumret.

Sub deleteSpecificRow()Rows(4).DeleteEnd Sub

detta tar bort den fjärde raden varje gång du kör makrot.

ta bort flera rader

Du kan också ta bort några rader samtidigt. Istället för att välja radnummer väljer du ett radintervall.

Sub deleteMultipleRows()Rows("2:4").DeleteEnd Sub

det tar bort raderna 2, 3 och 4.

ta bort valda rader

hittills har vi skapat makron som raderade rader med fasta nummer inuti koden. Den här gången tar vi bort rader från ett urval. Låt oss använda följande kod.

Sub deleteSelectedRows()Selection.EntireRow.DeleteEnd Sub

ta bort tomma rader

i det här exemplet identifierar Excel vilka celler som är tomma, väljer dem och tar bort raderna där de finns.

Sub deleteBlankRows()Selection.SpecialCells(xlCellTypeBlanks).SelectSelection.EntireRow.DeleteEnd Sub

detta makro raderar rader från markeringen endast om det innehåller frasen”Dålig rad”.

varning

Kom ihåg att texten är skiftlägeskänslig.

Sub deleteRowswithSelectedText()For Each Cell In Selection If Cell.Value = "Bad Row" Then Rows(Cell.Row).ClearContents End IfNextSelection.SpecialCells(xlCellTypeBlanks).SelectSelection.EntireRow.DeleteEnd Sub

kodanalys

2. Slingan går igenom varje element i valet.

3. Excel kontrollerar det faktiska cellvärdet och om värdet är exakt ”Dålig rad”.

4. Om villkoret är uppfyllt rensar Excel innehållet i cellen. Vi kan inte ta bort cell eftersom cellpositionen ändras och några av ”dåliga rader” kan stanna.

7. När alla” dåliga rader ” rensas väljer Excel dessa celler.

8. Raderar sedan rader av dessa celler.

om du också vill radera de rader som består av denna fras, och inte bara den exakta matchningen, använd InStr-funktionen. Denna funktion returnerar positionen för den första förekomsten av frasen.

ändra

Cell.Value = "Bad Row"

till

InStr(Cell, "Bad Row") > 0

Vi har fyra olika exempel i vårt kalkylblad. Var och en av dem returnerar en position.

  • ”Dålig RAD” Returnerar 1
  • ”bra RAD”Returnerar 0
  • ” 1 Dålig RAD”Returnerar 3
  • ” Dålig rad !”returnerar 1

det betyder att alla rader men ”bra rad” kommer att tas bort.

Radera rad där celltypen är en sträng

i det här exemplet tar vi bort en rad om celltypen är en sträng.

vid första anblicken verkar cellerna A3, A4 och A5 vara av samma typ. Men när du tittar på vad som händer bakom kulisserna (Ctrl + `) ser du att var och en av dem är annorlunda.

Sub deleteifString()Selection.SpecialCells(xlCellTypeConstants, 2).SelectSelection.EntireRow.DeleteEnd Sub

i den andra raden har du följande kod: xlCellTypeConstants. Det betyder att vi söker efter konstanter. Nummer 2 betyder den andra typen, som är text.

Excel väljer endast värden av typ text.

resultatet.

ta bort jämna/udda rader

låt oss nu bara ta bort de rader som är jämna.

Sub deleteEven()For Each Cell In Selection If Cell.Row Mod 2 = 0 Then Rows(Cell.Row).ClearContents End IfNextSelection.SpecialCells(xlCellTypeBlanks).SelectSelection.EntireRow.DeleteEnd Sub

koden är mycket lik den från föregående exempel. Det finns bara en skillnad.

Cell.Row Mod 2 = 0

detta betyder, om resten efter division är 0 (för siffror: 2, 4, 6, 8, …) Då är numret jämnt, om det är 1 då är det ett udda nummer (1, 3, 5, 6, …).

kalkylblad och Python entusiast.

inlägg visningar: 72,354

Lämna ett svar

Din e-postadress kommer inte publiceras.