Het toevoegen en verwijderen van rijen is onderdeel van de dagelijkse gemeenschappelijke taken bij het werken met Excel.
Hoewel u dit gemakkelijk kunt doen vanuit het werkblad zelf, wilt u soms de VBA route gebruiken om rijen te verwijderen in Excel. Dit kan zijn het verwijderen van een specifieke rij, meerdere rijen in de selectie, het verwijderen van alternatieve rijen of die met een specifieke waarde erin.
In deze tutorial zal ik u laten zien hoe u rijen in Excel kunt verwijderen met behulp van VBA (meerdere scenario’s).
Dus laten we beginnen!
Deze Tutorial behandelt:
Een hele rij verwijderen met VBA
Om een hele rij in Excel te verwijderen met behulp van VBA, moet u de methode EntireRow.Delete-methode gebruiken.
Wilt u bijvoorbeeld de hele eerste rij in een werkblad verwijderen, dan kunt u de onderstaande code gebruiken:
Sub DeleteEntireRow()Rows(1).EntireRow.DeleteEnd Sub
De bovenstaande code specificeert eerst de rij die moet worden verwijderd (wat wordt gedaan door het nummer tussen haakjes op te geven) en gebruikt vervolgens de methode EntireRow.Delete methode om het te verwijderen.
U kunt ook meerdere rijen verwijderen door deze rijen in de code op te geven.
Voorbeeld, de onderstaande code verwijdert de rijen 1, 5 en 9 in het werkblad:
Sub DeleteEntireRow()Rows(9).EntireRow.DeleteRows(5).EntireRow.DeleteRows(1).EntireRow.DeleteEnd Sub
De bovenstaande code gebruikt dezelfde logica, waarbij het de rijnummers opgeeft en Excel deze rijen één voor één verwijdert.
Alle rijen in de selectie verwijderen
Als u alle rijen in een geselecteerd cellenbereik wilt verwijderen, kunt u de onderstaande VBA-macrocode gebruiken:
Sub DeleteEntireRow()Selection.EntireRow.DeleteEnd Sub
De bovenstaande code is van toepassing op de methode EntireRow.Delete methode op de gehele selectie.
Alternatieve rijen verwijderen (of Elke Derde/vierde/Nde rij verwijderen)
Soms krijgt u een datadump waarbij elke tweede rij (of derde, vierde of N-de rij) nutteloos is en moet worden verwijderd.
Ik heb met financiële gegevens gewerkt waarbij elke tweede rij leeg was en moest worden verwijderd.
Dit is het soort scenario waarin VBA echt uitblinkt.
Hieronder staat de VBA-code die door alle rijen in de selectie gaat en elke tweede rij verwijdert:
Sub DeleteAlternateRows()RCount = Selection.Rows.CountFor i = RCount To 1 Step -2 Selection.Rows(i).EntireRow.DeleteNext iEnd Sub
Laat me uitleggen hoe deze VBA-code werkt.
Eerst heb ik een variabele RCount gebruikt om het totaal aantal rijen in de selectie te krijgen.
Daarna heb ik een For Next-lus gebruikt om dit zo vaak uit te voeren als er rijen zijn. Bijvoorbeeld, als er 12 rijen zijn, zal deze lus van 12 naar 1 lopen (dus 12 keer). Het is belangrijk om dit te doen vanaf de laatste rij in de selectie naar de eerste, omdat we niet willen dat de rijnummers veranderen als een rij wordt verwijderd.
Ook wordt stap -2 gebruikt omdat we elke andere rij moeten verwijderen (van onder naar boven). Als u elke derde rij wilt verwijderen, kunt u -3 gebruiken.
In de VBA-lus heb ik de methode Selection.Rows(i).EntireRow.Delete gebruikt om elke alternatieve rij te verwijderen.
Blanco rijen verwijderen met VBA
U kunt ook de methode EntireRow.Delete-methode gebruiken om alle lege rijen te verwijderen.
Hieronder staat de VBA-code waarmee lege cellen in de geselecteerde dataset worden geselecteerd en de hele rij wordt verwijderd.
Sub DeleteBlankRows()Selection.SpecialCells(xlCellTypeBlanks).EntireRow.DeleteEnd Sub
De bovenstaande code maakt gebruik van de eigenschap SpecialCells om alle cellen die leeg zijn te selecteren en te verwijderen. Dit is dezelfde methode waarmee we ook het dialoogvenster ‘Ga naar speciaal’ kunnen gebruiken om alle lege cellen te selecteren.
Als deze lege cellen eenmaal zijn geïdentificeerd met SpecialCell, worden deze vervolgens verwijderd met de methode EntireRow.Delete.
Rijen met een specifiek woord/waarde verwijderen
U kunt ook een eenvoudige VBA-code gebruiken om door elke cel in het geselecteerde bereik te gaan en alle rijen te verwijderen waarin een cel een specifieke tekst of waarde bevat.
Voorbeeld: stel dat u een gegevensreeks hebt en ik wil alle cellen verwijderen die in kolom 2 van de selectie de tekst Printer hebben.
Hieronder staat de code die dit zal doen:
Sub DeleteRowswithSpecificValue()For i = Selection.Rows.Count To 1 Step -1If Cells(i, 2).Value = "Printer" ThenCells(i, 2).EntireRow.DeleteEnd IfNext iEnd Sub
De bovenstaande code telt eerst het totale aantal rijen in de selectie. Dit zal ervoor zorgen dat de lus slechts zoveel keer wordt uitgevoerd. Vervolgens wordt de ‘For Next loop’ gebruikt om door alle cellen in kolom 2 te gaan.
De IF THEN ELSE verklaring wordt dan gebruikt om de waarde in elke cel in kolom 2 te controleren. En of de waarde/tekst overeenkomt met de opgegeven tekst (die in dit voorbeeld ‘Printer’ is).
In dit voorbeeld heb ik gecontroleerd of de tekst overeenkomt met een specifieke tekenreeks of niet. Je kunt dit ook met waarden doen. Je kunt bijvoorbeeld alle rijen verwijderen waarvan de verkoopwaarde kleiner is dan 1000 of groter dan 1000.
Note: Een belangrijk ding om hier op te merken is dat de lus loopt vanaf Selection.Rows.Count To 1 om er zeker van te zijn dat wanneer een rij wordt verwijderd, dit geen invloed heeft op de rijen erboven.
Hoe deze VBA code te gebruiken
Nu zal ik u laten zien hoe u alle codes kunt gebruiken die in deze handleiding zijn genoemd om de gehele rij te verwijderen.
U moet deze codes kopiëren en plakken in een module in Excel VB Editor. Zodra u deze codes hebt gekopieerd, kunt u vervolgens de macro-codes uitvoeren.
Hieronder vindt u de stappen om deze VBA-codes te kopiëren en in een module te plakken:
- Houd de ALT-toets ingedrukt en druk op de F11-toets (of Function + Option + F11 in Mac). Dit opent de VB-editor
- In de VB-editor ziet u de projectverkenner aan de linkerkant. Als u deze niet ziet, ga dan naar de View optie en klik dan op Project Explorer.
- Rechtsklik op een object in de Project Explorer (voor de werkmap waarin u de code wilt uitvoeren).
- Ga naar Insert en klik dan op Module. Hierdoor wordt een nieuwe module voor de werkmap ingevoegd
- Kopieer en plak de bovenstaande codes in de module.
En om deze codes uit te voeren, kunt u de cursor ergens in de code plaatsen (die u wilt uitvoeren) en op de F5 toets drukken (of klik op het groene driehoekje in de VBA werkbalk).
Ik heb ook een uitvoerige handleiding geschreven over verschillende manieren om VBA-macro’s in Excel uit te voeren.
Dit waren dus enkele VBA-codes die u kunt gebruiken om hele rijen in Excel te verwijderen (in verschillende scenario’s). Dezelfde logica kan ook worden toegepast in het geval u kolommen wilt verwijderen in plaats van rijen (met de overeenkomstige aanpassing in de codevoorbeelden).
Hoop dat u deze tutorial nuttig vond!
De volgende Excel-tutorials kunnen u ook bevallen:
- Excel VBA Autofilter: Een complete gids met voorbeelden
- Rijen verwijderen op basis van een celwaarde (of voorwaarde) in Excel
- Een lege rij invoegen na elke rij in Excel (of elke N-de rij)
- Hoe verwijder je snel COLUMNS in Excel