3 bedste måder at finde sidste ikke-tomme række og kolonne ved hjælp af VBA

Indholdsfortegnelse

At finde senest brugte række og kolonne er en af ​​de grundlæggende og vigtige opgaver for enhver automatisering i Excel ved hjælp af VBA. For at sammensætte ark, projektmapper og automatisk arrangere data skal du finde grænsen for dataene på ark.

Denne artikel vil forklare enhver metode til at finde sidste række og kolonne i excel på nemmeste måder.
1. Find sidste ikke-tomme række i en kolonne ved hjælp af Range.End
Lad os se koden først. Jeg forklarer 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

Ovenstående del finder den sidste række i kolonne 1.

Hvordan det virker?
Det er ligesom at gå til sidste række i arket og derefter trykke på CTRL+UP genvej.
Celler (rækker, antal, 1): Denne del vælger celle i kolonne A. Rækker.Tælling giver 1048576, som normalt er den sidste række i excelark.

Celler (1048576, 1)

.Slut (xlUp): Slut er en metode i områdeklasse, der bruges til at navigere i ark til ender. xlUp er variablen, der fortæller retningen. Sammen vælger denne kommando den sidste række med data.

Celler (rækker, antal, 1). Afslut (xlUp)

.Række: række returnerer rækkenummeret for den markerede celle. Derfor får vi række nummeret på den sidste celle med data i kolonne A. i eksemplet er det 8.

Se hvor let det er at finde de sidste rækker med data. Denne metode vælger den sidste række i data uanset tomme celler før den. Du kan se det på billedet, at kun celle A8 har data. Alle foregående celler er tomme undtagen A4.

Vælg den sidste celle med data i en kolonne
Hvis du vil markere den sidste celle i en kolonne, skal du bare fjerne “.row” fra slutningen og skrive. Vælg.

Sub getLastUsedRow () Celler (Rows.Count, 1) .End (xlUp) .Vælg 'Denne linje vælger den sidste celle i en kolonne End Sub

Kommandoen ".Vælg" vælger den aktive celle.
Hent den sidste celles adressekolonne
Hvis du vil have den sidste celles adresse i en kolonne, skal du bare fjerne ".row" fra slutningen og skrive .adresse.

Sub getLastUsedRow () add = Cells (Rows.Count, 1). End (xlUp) .address 'Denne linje vælger den sidste celle i en kolonne Debug.print tilføj afslutningssub

Området.Adresse funktion returnerer aktivcellens adresse.
Find sidste ikke-tomme kolonne i en række
Det er næsten det samme som at finde den sidste ikke -tomme celle i en kolonne. Her får vi kolonnenummer for sidste celle med data i række 4.

Sub getLastUsedCol () Dim last_col As Integer last_col = Celler (4, Columns.Count) .End (xlToLeft) .Column ‘Denne linje får den sidste kolonne Debug.Print last_col End Sub


Du kan se på billedet, at den returnerer den sidste ikke -tomme celles kolonnenummer i række 4. Hvilket er 4.
Hvordan det virker?

Nå, mekanikken er det samme som at finde den sidste celle med data i en kolonne. Vi har bare brugt søgeord relateret til kolonner.
Vælg datasæt i Excel ved hjælp af VBA
Nu ved vi, hvordan man får den sidste række og den sidste kolonne i excel ved hjælp af VBA. Ved hjælp af det kan vi nemt vælge en tabel eller et datasæt. Efter at have valgt datasæt eller tabel kan vi udføre flere operationer på dem, som kopierings-indsæt, formatering, sletning osv.
Her har vi datasæt. Disse data kan ekspandere nedad. Kun startcellen er fast, hvilket er B4. Den sidste række og kolonne er ikke rettet. Vi skal vælge hele tabellen dynamisk ved hjælp af vba.

VBA -kode til valg af tabel med tomme 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) .Kolonne 'Vælg hele tabelinterval (celler (4, 2), celler (sidste_række, sidste_kol)). Vælg Afslut sub

Når du kører dette, vælges hele tabellen på brøkdele af et sekund. Du kan tilføje nye rækker og kolonner. Det vil altid vælge hele data.

Fordele ved denne metode:

  1. Det er nemt. Vi skrev bogstaveligt talt kun en linje for at få den sidste række med data. Dette gør det let.
  2. Hurtig. Mindre kodelinje, mindre tid.
  3. Let at forstå.
  4. Virker perfekt, hvis du har en klodset datatabel med fast udgangspunkt.

Ulemper ved Range.End metode:

  1. Udgangspunktet skal være kendskab.
  2. Du kan kun få den sidste ikke-tomme celle i en kendt række eller kolonne. Når dit udgangspunkt ikke er fast, vil det være ubrugeligt. Hvilket meget mindre sandsynligt vil ske.

2. Find sidste række ved hjælp af funktionen Find ()
Lad os 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 på billedet, returnerer denne kode den sidste række nøjagtigt.
Hvordan det virker?
Her bruger vi find -funktionen til at finde enhver celle, der indeholder noget ved hjælp af wild card -operatøren "*". Stjerne bruges til at finde noget, tekst eller tal.

Vi angiver søgerækkefølge efter rækker (søgerækkefølge: = xlByRows). Vi fortæller også excel vba søgeretningen som xlPrevious (searchdirection: = xlPrevious). Det gør find -funktion til at søge fra enden af ​​arket, rækkevis. Når den finder en celle, der indeholder noget, stopper den. Vi bruger metoden Range.Row til at hente sidste række fra den aktive celle.

Fordele ved Find -funktion til at få den sidste celle med data:

  1. Du behøver ikke at kende udgangspunktet. Det får dig bare sidste række.
  2. Det kan være generisk og kan bruges til at finde den sidste celle med data i ethvert ark uden ændringer.
  3. Kan bruges til at finde enhver sidste forekomst af specifik tekst eller nummer på ark.

Ulemper ved funktionen Find ():

  1. Det er grimt. For mange argumenter.
  2. Det er langsomt.
  3. Kan ikke bruges til at hente den sidste ikke -tomme kolonne. Teknisk set kan du. Men det bliver for langsomt.

3. Brug af SpecialCells -funktion til at få sidste række
SpecialCells -funktionen med xlCellTypeLastCell -argumentet returnerer den sidst anvendte celle. Lad os se koden først

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


Hvis du kører ovenstående kode, får du rækkenummer for sidst anvendte celle.

Hvordan det virker?

Dette er vba -ækvivalent med genvej CTRL+End in excel. Den vælger den sidst brugte celle. Hvis du optager makroen, mens du trykker på CTRL+End, får du denne kode.

Submakro1 () '' Makro1 -makro '' ActiveCell.SpecialCells (xlLastCell) .Vælg Afslut sub 

Vi brugte det bare til at få sidst brugte celles rækkenummer.

Bemærk: Som jeg sagde ovenfor, returnerer denne metode den sidst anvendte celle, ikke sidste celle med data. Hvis du sletter dataene i sidste celle, vil ovenstående vba -kode stadig returnere den samme cellereference, da det var den "sidst anvendte celle". Du skal først gemme dokumentet for at få den sidste celle med data ved hjælp af denne metode.

Slet ark uden bekræftelsesmeddelelser ved hjælp af VBA i Microsoft Excel

Tilføj og gem ny arbejdsmappe ved hjælp af VBA i Microsoft Excel 2016

Vis en meddelelse på Excel VBA -statuslinjen

Slå advarselsmeddelelser fra ved hjælp af VBA i Microsoft Excel 2016

Populære artikler:

VLOOKUP -funktionen i Excel

COUNTIF i Excel 2016

Sådan bruges SUMIF -funktionen i Excel

Du vil bidrage til udviklingen af ​​hjemmesiden, at dele siden med dine venner

wave wave wave wave wave