in Excel kunt u een Rij verwijderen door met de rechtermuisknop op het nummer van de rij te klikken en vervolgens Verwijderen te selecteren. Maar als u rijen wilt verwijderen met behulp van meer geavanceerde methoden, moet u VBA gebruiken. Hiermee kunt u rijen op veel verschillende manieren verwijderen.
Verwijder een specifieke rij
de meest eenvoudige manier om een rij in VBA te verwijderen is door het rijnummer te gebruiken.
Sub deleteSpecificRow()Rows(4).DeleteEnd Sub
Dit zal de vierde rij verwijderen elke keer dat u de macro uitvoert.
meerdere rijen verwijderen
u kunt ook enkele rijen tegelijk verwijderen. In plaats van het rijnummer te selecteren, selecteert u een rijbereik.
Sub deleteMultipleRows()Rows("2:4").DeleteEnd Sub
Het zal rijen 2, 3 en 4 verwijderen.
Verwijder geselecteerde rijen
tot nu toe hebben we macro ‘ s gemaakt die rijen met vaste getallen in de code verwijderden. Laten we deze keer rijen uit een selectie verwijderen. Laten we de volgende code gebruiken.
Sub deleteSelectedRows()Selection.EntireRow.DeleteEnd Sub
lege rijen verwijderen
in dit voorbeeld identificeert Excel welke cellen leeg zijn, selecteert ze en verwijdert de rijen waarin ze aanwezig zijn.
Sub deleteBlankRows()Selection.SpecialCells(xlCellTypeBlanks).SelectSelection.EntireRow.DeleteEnd Sub
Deze macro verwijdert alleen rijen uit de selectie als deze de zin”slechte rij” bevat.
voorzichtig
onthoud dat tekst hoofdlettergevoelig is.
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
codeanalyse
2. De lus gaat door elk element in de selectie.
3. Excel controleert de werkelijke celwaarde en of de waarde precies “slechte rij”is.
4. Als aan de voorwaarde is voldaan, wist Excel de inhoud van de cel. We kunnen de cel niet verwijderen omdat de celpositie zal veranderen en sommige “slechte rijen” kunnen blijven.
7. Wanneer alle” slechte rijen ” zijn gewist, selecteert Excel deze cellen.
8. Verwijdert vervolgens rijen van deze cellen.
Als u ook de rijen wilt verwijderen die uit deze zin bestaan, en niet alleen de exacte overeenkomst, gebruik dan de InStr-functie. Deze functie retourneert de positie van het eerste voorkomen van de zin.
Wijzig
Cell.Value = "Bad Row"
naar
InStr(Cell, "Bad Row") > 0
we hebben vier verschillende voorbeelden in ons werkblad. Elk van hen geeft een positie terug.
- “Bad Row”geeft 1
- ” Good Row”geeft 0
- ” 1 Bad Row”geeft 3
- ” Bad Row !”geeft 1
terug dat betekent dat alle rijen behalve “goede rij” verwijderd zullen worden.
verwijder rij als het celtype een tekenreeks is
in dit voorbeeld zullen we een Rij verwijderen als het celtype een tekenreeks is.
op het eerste gezicht lijken de cellen A3, A4 en A5 van hetzelfde type te zijn. Maar als je kijkt naar wat er achter de schermen gebeurt (Ctrl + `) zul je zien dat elk van hen anders is.
Sub deleteifString()Selection.SpecialCells(xlCellTypeConstants, 2).SelectSelection.EntireRow.DeleteEnd Sub
Op de tweede regel staat de volgende code: xlCellTypeConstants. Het betekent dat we op zoek zijn naar constanten. Nummer 2 betekent het tweede type, dat tekst is.
Excel kiest alleen waarden van type tekst.
het resultaat.
even/oneven rijen verwijderen
laten we nu alleen die Rijen verwijderen die even zijn.
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
de code is zeer vergelijkbaar met die van het vorige voorbeeld. Er is maar één verschil.
cel.Rij Mod 2 = 0
Dit betekent, als de rest na deling 0 is (voor getallen: 2, 4, 6, 8, …) dan is het getal even, als het 1 is dan is het een oneven getal (1, 3, 5, 6, …).
Spreadsheet and Python enthusiast.