Het vinden van de laatst gebruikte rij en kolom is een van de fundamentele en belangrijke taken voor elke automatisering in Excel met behulp van VBA. Voor het automatisch samenstellen van werkbladen, werkmappen en het ordenen van gegevens moet je de limiet van de gegevens op werkbladen opzoeken.
Dit artikel legt op de gemakkelijkste manieren elke methode uit om de laatste rij en kolom in Excel te vinden.
1. Vind de laatste niet-lege rij in een kolom met Range.End
Laten we eerst de code bekijken. Ik zal het uitleggen brief.
Sub getLastUsedRow() Dim last_row As Integer last_row = Cells(Rows.Count, 1).End(xlUp).Row 'Deze regel krijgt de laatste rij Debug.Print last_row End Sub
De bovenstaande sub vindt de laatste rij in kolom 1.
Hoe het werkt?
Het is net alsof je naar de laatste rij in het blad gaat en vervolgens op de sneltoets CTRL+UP drukt.
Cellen (rijen.telling, 1): Dit deel selecteert cel in kolom A. Rows.Count geeft 1048576, wat meestal de laatste rij in Excel-blad is.
Cellen (1048576, 1)
.Einde(xlUp): End is een methode van bereikklasse die wordt gebruikt om in werkbladen naar uiteinden te navigeren. xlUp is de variabele die de richting aangeeft. Samen selecteert deze opdracht de laatste rij met gegevens.
Cellen(Rijen.Aantal, 1).End(xlUp)
.Rij : rij retourneert het rijnummer van de geselecteerde cel. Daarom krijgen we het rijnummer van de laatste cel met gegevens in kolom A. in ons voorbeeld is dit 8.
Zie hoe gemakkelijk het is om de laatste rijen met gegevens te vinden. Deze methode selecteert de laatste rij in gegevens, ongeacht de lege cellen ervoor. Je kunt in de afbeelding zien dat alleen cel A8 gegevens heeft. Alle voorgaande cellen zijn leeg, behalve A4.
Selecteer de laatste cel met gegevens in een kolom
Als u de laatste cel in kolom A wilt selecteren, verwijdert u gewoon ".row" van het einde en schrijft u .select.
Sub getLastUsedRow() Cells(Rows.Count, 1).End(xlUp).Selecteer 'Deze regel selecteert de laatste cel in een kolom End Sub
De opdracht ".Select" selecteert de actieve cel.
De adreskolom van de laatste cel ophalen
Als u het adres van de laatste cel in kolom A wilt krijgen, verwijdert u gewoon ".row" van het einde en schrijft u .address.
Sub getLastUsedRow() add=Cells(Rows.Count, 1).End(xlUp).address 'Deze regel selecteert de laatste cel in een kolom Debug.print add End Sub
Het bereik.Adres functie retourneert het adres van de actieve cel.
Vind de laatste niet-lege kolom op een rij
Het is bijna hetzelfde als het vinden van de laatste niet-lege cel in een kolom. Hier krijgen we het kolomnummer van de laatste cel met gegevens in rij 4.
Sub getLastUsedCol() Dim last_col As Integer last_col = Cells(4,Columns.Count).End(xlToLeft).Column 'Deze regel krijgt de laatste kolom Debug.Print last_col End Sub
U kunt in de afbeelding zien dat het het kolomnummer van de laatste niet-lege cel in rij 4 retourneert. Dat is 4.
Hoe het werkt?
Welnu, de mechanica is hetzelfde als het vinden van de laatste cel met gegevens in een kolom. We hebben zojuist trefwoorden gebruikt die verband houden met kolommen.
Selecteer gegevensset in Excel met VBA
Nu weten we hoe we de laatste rij en laatste kolom van Excel kunnen krijgen met VBA. Hiermee kunnen we eenvoudig een tabel of dataset selecteren. Nadat we een dataset of tabel hebben geselecteerd, kunnen we er verschillende bewerkingen op uitvoeren, zoals kopiëren en plakken, formatteren, verwijderen enz.
Hier hebben we een dataset. Deze gegevens kunnen zich naar beneden uitbreiden. Alleen de startcel staat vast, namelijk B4. De laatste rij en kolom staat niet vast. We moeten de hele tabel dynamisch selecteren met vba.
VBA-code om tabel met lege cellen te selecteren
Sub select_table() Dim last_row, last_col As Long 'Get laatste rij last_row = Cells(Rows.Count, 2).End(xlUp).Row 'Get laatste kolom last_col = Cells(4, Columns.Count).End(xlToLeft) .Kolom 'Selecteer hele tabel Bereik(Cells(4, 2), Cells(last_row, last_col)).Select End Sub
Wanneer u dit uitvoert, wordt de hele tabel in een fractie van een seconde geselecteerd. U kunt nieuwe rijen en kolommen toevoegen. Het zal altijd de volledige gegevens selecteren.
Voordelen van deze methode:
- Het is makkelijk. We hebben letterlijk maar één regel geschreven om de laatste rij met gegevens te krijgen. Dit maakt het gemakkelijk.
- Snel. Minder regel code, minder tijd nodig.
- Makkelijk te begrijpen.
- Werkt perfect als je een onhandige gegevenstabel hebt met een vast startpunt.
Nadelen van Range.End-methode:
- Het uitgangspunt moet bekend zijn.
- U kunt alleen de laatste niet-lege cel in een bekende rij of kolom krijgen. Als je uitgangspunt niet vaststaat, is het nutteloos. Wat zeer weinig waarschijnlijk zal gebeuren.
2. Vind de laatste rij met de functie Find()
Laten we eerst de code bekijken.
Sub last_row() lastRow = ActiveSheet.Cells.Find("*", zoekvolgorde:=xlByRows, searchdirection:=xlPrevious).Row Debug.Print lastRow End Sub
Zoals u in de afbeelding kunt zien, geeft deze code de laatste rij nauwkeurig terug.
Hoe het werkt?
Hier gebruiken we de zoekfunctie om elke cel te vinden die iets bevat met behulp van de jokertekenoperator "*". Asterisk wordt gebruikt om iets te vinden, tekst of nummer.
We stellen de zoekvolgorde in op rijen (zoekvolgorde:=xlByRows). We vertellen Excel vba ook de zoekrichting als xlPrevious (searchdirection:=xlPrevious). Het maakt de zoekfunctie om vanaf het einde van het blad te zoeken, rijgewijs. Zodra het een cel vindt die iets bevat, stopt het. We gebruiken de Range.Row-methode om de laatste rij uit de actieve cel op te halen.
Voordelen van de zoekfunctie om de laatste cel met gegevens te krijgen:
- U hoeft het startpunt niet te kennen. Je krijgt gewoon de laatste rij.
- Het kan generiek zijn en kan worden gebruikt om de laatste cel met gegevens in elk blad te vinden zonder enige wijzigingen.
- Kan worden gebruikt om een laatste exemplaar van een specifieke tekst of nummer op het blad te vinden.
Nadelen van de functie Find():
- Het is lelijk. Te veel argumenten.
- Het is langzaam.
- Kan niet gebruiken om de laatste niet-lege kolom te krijgen. Technisch gezien kan dat. Maar het wordt te langzaam.
3. De functie SpecialCells gebruiken om de laatste rij te krijgen
De functie SpecialCells met het argument xlCellTypeLastCell retourneert de laatst gebruikte cel. Laten we eerst de code zien
Sub spl_last_row_() lastRow = ActiveSheet.Cells.Speciale cellen (xlCellTypeLastCell).Rij foutopsporing.Afdrukken laatste rij Einde sub
Als u de bovenstaande code uitvoert, krijgt u het rijnummer van de laatst gebruikte cel.
Hoe het werkt?
Dit is het vba-equivalent van sneltoets CTRL+End in Excel. Het selecteert de laatst gebruikte cel. Als u de macro opneemt terwijl u op CTRL+End drukt, krijgt u deze code.
Sub Macro1() ' ' Macro1 Macro ' ' ActiveCell.SpecialCells(xlLastCell).Selecteer End Sub
We hebben het zojuist gebruikt om het rijnummer van de laatst gebruikte cel te krijgen.
Opmerking: Zoals ik hierboven al zei, retourneert deze methode de laatst gebruikte cel en niet de laatste cel met gegevens. Als u de gegevens in de laatste cel verwijdert, retourneert de bovenstaande vba-code nog steeds dezelfde celverwijzing, aangezien het de "laatst gebruikte cel" was. U moet het document eerst opslaan om de laatste cel met gegevens te krijgen met behulp van deze methode.
Bladen verwijderen zonder bevestigingsvragen met VBA in Microsoft Excel
Nieuwe werkmap toevoegen en opslaan met VBA in Microsoft Excel 2016
Geef een bericht weer op de Excel VBA-statusbalk
Schakel waarschuwingsberichten uit met VBA in Microsoft Excel 2016
Populaire artikels:
De VERT.ZOEKEN-functie in Excel
AANTAL.ALS in Excel 2016
Hoe de SUMIF-functie in Excel te gebruiken?