3 bästa sätten att hitta den senaste icke-tomma raden och kolumnen med hjälp av VBA

Innehållsförteckning

Att hitta senast använda rad och kolumn är en av de grundläggande och viktiga uppgifterna för all automatisering i Excel med VBA. För att sammanställa blad, arbetsböcker och ordna data automatiskt måste du hitta gränsen för data på blad.

Denna artikel kommer att förklara varje metod för att hitta sista raden och kolumnen i Excel på enklaste sätt.
1. Hitta sista icke-tomma raden i en kolumn med Range.End
Låt oss se koden först. Jag förklarar det brev.

Sub getLastUsedRow () Dim last_row As Integer last_row = Cells (Rows.Count, 1) .End (xlUp) .Row ‘This line gets the last row Debug.Print last_row End Sub

Ovanstående del hittar den sista raden i kolumn 1.

Hur det fungerar?
Det är precis som att gå till sista raden i arket och sedan trycka på CTRL+UP -genväg.
Celler (rader, antal, 1): Den här delen väljer cell i kolumn A. Raderna ger 1048576, vilket vanligtvis är den sista raden i Excel -blad.

Celler (1048576, 1)

.Slut (xlUp): Slut är en metod för intervallklass som används för att navigera i ark till ändar. xlUp är variabeln som anger riktningen. Tillsammans väljer detta kommando den sista raden med data.

Celler (rader, antal, 1). Slut (xlUp)

.Rad : rad returnerar radnumret för den markerade cellen. Därför får vi radnumret för den sista cellen med data i kolumn A. i exemplet är det 8.

Se hur enkelt det är att hitta sista raderna med data. Denna metod väljer sista raden i data oavsett tomma celler före den. Du kan se det i bilden som bara cell A8 har data. Alla föregående celler är tomma utom A4.

Välj den sista cellen med data i en kolumn
Om du vill markera den sista cellen i A -kolumnen tar du bara bort ".row" från slutet och skriver. Select.

Sub getLastUsedRow () Cells (Rows.Count, 1) .End (xlUp) .Välj 'Denna rad väljer den sista cellen i en kolumn End Sub

Kommandot ".Välj" väljer den aktiva cellen.
Hämta den sista cellens adresskolumn
Om du vill få den sista cellens adress i en kolumn tar du bara bort ".row" från slutet och skriver .adress.

Sub getLastUsedRow () add = Cells (Rows.Count, 1) .End (xlUp) .address 'Denna rad väljer den sista cellen i en kolumn Debug.print add End Sub

Räckvidden.Adress -funktionen returnerar aktivcellens adress.
Hitta sista icke-tomma kolumnen i en rad
Det är nästan samma sak som att hitta den sista icke tomma cellen i en kolumn. Här får vi kolumnnummer för sista cellen med data i rad 4.

Sub getLastUsedCol () Dim last_col As Integer last_col = Cells (4, Columns.Count) .End (xlToLeft) .Column ‘This line gets the last column Debug.Print last_col End Sub


Du kan se på bilden att den returnerar den sista icke -tomma cellens kolumnnummer på rad 4. Vilket är 4.
Hur det fungerar?

Tja, mekaniken är samma som att hitta sista cellen med data i en kolumn. Vi har bara använt nyckelord relaterade till kolumner.
Välj datauppsättning i Excel med hjälp av VBA
Nu vet vi hur man får sista raden och sista Excel -kolumnen med VBA. Med hjälp av det kan vi enkelt välja en tabell eller datamängd. Efter att ha valt datauppsättning eller tabell kan vi utföra flera operationer på dem, som att kopiera-klistra in, formatera, ta bort etc.
Här har vi datauppsättning. Dessa data kan expandera nedåt. Endast startcellen är fixerad, vilket är B4. Den sista raden och kolumnen är inte fixad. Vi måste välja hela tabellen dynamiskt med hjälp av vba.

VBA -kod för att välja tabell med tomma celler

Sub select_table () Dim last_row, last_col As Long 'Get last row last_row = Cells (Rows.Count, 2) .End (xlUp) .Row' Get last column last_col = Cells (4, Columns.Count) .End (xlToLeft) .Kolumn 'Välj hela tabellintervallet (Celler (4, 2), Celler (last_row, last_col)). Välj End Sub

När du kör detta kommer hela tabellen att väljas i bråkdel av en sekund. Du kan lägga till nya rader och kolumner. Det kommer alltid att välja hela data.

Fördelar med denna metod:

  1. Det är lätt. Vi skrev bokstavligen bara en rad för att få sista raden med data. Detta gör det enkelt.
  2. Snabb. Mindre kodrad, mindre tid.
  3. Lätt att förstå.
  4. Fungerar perfekt om du har en klumpig datatabell med fast utgångspunkt.

Nackdelar med Range.Slutmetod:

  1. Utgångspunkten måste vara vet.
  2. Du kan bara få den sista icke-tomma cellen i en känd rad eller kolumn. När din utgångspunkt inte är fast kommer den att vara värdelös. Vilket är mycket mindre sannolikt att hända.

2. Hitta sista raden med funktionen Sök ()
Låt oss se koden först.

 Sub last_row () lastRow = ActiveSheet.Cells.Find ("*", searchorder: = xlByRows, searchdirection: = xlPrevious) .Row Debug.Print lastRow End Sub 


Som du kan se det i bilden returnerar den här koden den sista raden exakt.
Hur det fungerar?
Här använder vi hitta -funktionen för att hitta alla celler som innehåller något som använder wild card -operatören "*". Asterisk används för att hitta allt, text eller nummer.

Vi ställer in sökordning efter rader (sökorder: = xlByRows). Vi berättar också för excel vba sökriktningen som xlPrevious (searchdirection: = xlPrevious). Det gör hitta -funktionen att söka från slutet av arket, radvis. När den hittat en cell som innehåller någonting, stannar den. Vi använder metoden Range.Row för att hämta sista raden från aktiv cell.

Fördelar med Sök -funktion för att få sista cellen med data:

  1. Du behöver inte veta utgångspunkten. Det ger dig bara sista raden.
  2. Den kan vara generisk och kan användas för att hitta sista cellen med data i alla blad utan några ändringar.
  3. Kan användas för att hitta någon sista instans av specifik text eller nummer på arket.

Nackdelar med funktionen Find ():

  1. Det är fult. För många argument.
  2. Det är långsamt.
  3. Kan inte använda för att hämta den sista kolumnen som inte är tom. Tekniskt sett kan du. Men det blir för långsamt.

3. Använda SpecialCells -funktionen för att få sista raden
SpecialCells -funktionen med xlCellTypeLastCell -argumentet returnerar den senast använda cellen. Låt oss se koden först

Sub spl_last_row_ () lastRow = ActiveSheet.Cells.SpecialCells (xlCellTypeLastCell).Row Debug.Print lastRow End Sub


Om du kör koden ovan får du radnummer för den senast använda cellen.

Hur det fungerar?

Detta är vba -ekvivalenten för genväg CTRL+End in excel. Den väljer den senast använda cellen. Om du spelar in makrot medan du trycker på CTRL+End, får du den här koden.

Sub Macro1 () '' Macro1 Macro '' ActiveCell.SpecialCells (xlLastCell) .Välj End Sub 

Vi använde den precis för att få senast använda cellens radnummer.

Notera: Som jag sa ovan kommer denna metod att returnera den senast använda cellen, inte den sista cellen med data. Om du raderar data i förra cellen kommer ovanstående vba -kod fortfarande att returnera samma cellreferens, eftersom det var den "senast använda cellen". Du måste spara dokumentet först för att få sista cellen med data med den här metoden.

Ta bort blad utan bekräftelsefrågor med VBA i Microsoft Excel

Lägg till och spara ny arbetsbok med VBA i Microsoft Excel 2016

Visa ett meddelande i Excel VBA -statusfältet

Stäng av varningsmeddelanden med VBA i Microsoft Excel 2016

Populära artiklar:

VLOOKUP -funktionen i Excel

COUNTIF i Excel 2016

Hur man använder SUMIF -funktionen i Excel

Du kommer att bidra till utvecklingen av webbplatsen, dela sidan med dina vänner

wave wave wave wave wave