Cele mai bune 3 moduri de a găsi ultimul rând și coloană ne-goală folosind VBA

Cuprins

Găsirea ultimului rând și coloană utilizate este una dintre sarcinile de bază și importante pentru orice automatizare în Excel folosind VBA. Pentru a compila foi, registre de lucru și aranja automat datele, trebuie să găsiți limita datelor pe foi.

Acest articol va explica fiecare metodă de a găsi ultimul rând și coloană în Excel în cele mai simple moduri.
1. Găsiți ultimul rând non-gol într-o coloană folosind Range.End
Să vedem mai întâi codul. Îi voi explica scrisoarea.

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

Sub-ul de mai sus găsește ultimul rând din coloana 1.

Cum functioneaza?
Este ca și cum ați merge pe ultimul rând din foaie și apoi apăsați CTRL + UP comanda rapidă.
Celule (Rows.Count, 1): Această parte selectează celula din coloana A. Rows.Count dă 1048576, care este de obicei ultimul rând din foaia Excel.

Celule (1048576, 1)

.End (xlUp): End este o metodă a clasei de interval care este utilizată pentru a naviga în foi până la capete. xlUp este variabila care spune direcția. Împreună această comandă selectează ultimul rând cu date.

Celule (Rows.Count, 1). End (xlUp)

.Rând : rândul returnează numărul rândului celulei selectate. Prin urmare, obținem numărul rândului ultimei celule cu date în coloana A. în exemplul exterior este 8.

Vedeți cât de ușor este să găsiți ultimele rânduri cu date. Această metodă va selecta ultimul rând din date, indiferent de celulele goale dinaintea acestuia. Puteți vedea asta în imagine că numai celula A8 are date. Toate celulele precedente sunt goale, cu excepția A4.

Selectați ultima celulă cu date într-o coloană
Dacă doriți să selectați ultima celulă din coloana A, apoi eliminați „.row” de la sfârșit și scrieți .select.

Sub getLastUsedRow () Cells (Rows.Count, 1) .End (xlUp). Selectați „Această linie selectează ultima celulă dintr-o coloană End Sub

Comanda „.Select” selectează celula activă.
Obțineți coloana de adresă a ultimei celule
Dacă doriți să obțineți ultima adresă a celulei în coloana A, apoi eliminați „.row” de la sfârșit și scrieți .address.

Sub getLastUsedRow () add = Cells (Rows.Count, 1) .End (xlUp) .address ‘Această linie selectează ultima celulă dintr-o coloană Debug.print add End Sub

Gama.Abordare funcția returnează adresa activecell.
Găsiți ultima coloană necompletată la rând
Este aproape la fel ca și găsirea ultimei celule necompletate într-o coloană. Aici obținem numărul coloanei ultimei celule cu date în rândul 4.

Sub getLastUsedCol () Dim last_col As Integer last_col = Cells (4, Columns.Count) .End (xlToLeft) .Column ‘Această linie primește ultima coloană Debug.Print last_col End Sub


Puteți vedea în imagine că returnează ultimul număr de coloană necompletată din rândul 4. Care este 4.
Cum functioneaza?

Ei bine, mecanica este aceeași cu găsirea ultimei celule cu date într-o coloană. Am folosit doar cuvinte cheie legate de coloane.
Selectați Set de date în Excel folosind VBA
Acum știm cum să obținem ultimul rând și ultima coloană de excel folosind VBA. Folosind aceasta putem selecta cu ușurință un tabel sau un set de date. După selectarea setului de date sau a tabelului, putem face mai multe operații pe ele, cum ar fi copierea-lipirea, formarea, ștergerea etc.
Aici avem set de date. Aceste date se pot extinde în jos. Numai celula de pornire este fixă, care este B4. Ultimul rând și coloană nu sunt fixate. Trebuie să selectăm întreg tabelul dinamic folosind vba.

Cod VBA pentru a selecta tabelul cu celule goale

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) .Column 'Selectați întregul interval al tabelului (celule (4, 2), celule (last_row, last_col)). Selectați End Sub

Când rulați acest lucru, întregul tabel va fi selectat în fracțiuni de secundă. Puteți adăuga rânduri și coloane noi. Va selecta întotdeauna toate datele.

Avantajele acestei metode:

  1. Este ușor. Am scris literalmente o singură linie pentru a obține ultimul rând cu date. Acest lucru îl face ușor.
  2. Rapid. Mai puțină linie de cod, mai puțin timp necesar.
  3. Ușor de înțeles.
  4. Funcționează perfect dacă aveți un tabel de date neîndemânatic cu punct de plecare fix.

Contra metodei Range.End:

  1. Punctul de plecare trebuie să fie cunoscut.
  2. Puteți obține ultima celulă necompletată dintr-un rând sau coloană cunoscută. Când punctul tău de plecare nu este fixat, va fi inutil. Ceea ce este foarte puțin probabil să se întâmple.

2. Găsiți ultimul rând folosind funcția Găsiți ()
Să vedem mai întâi codul.

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


După cum puteți vedea în imagine, acest cod returnează cu precizie ultimul rând.
Cum functioneaza?
Aici folosim funcția de găsire pentru a găsi orice celulă care conține orice lucru folosind operatorul wild card „*”. Asteriscul este folosit pentru a găsi orice, text sau număr.

Setăm ordinea de căutare după rânduri (searchorder: = xlByRows). De asemenea, spunem excel vba direcția de căutare ca xlPrevious (searchdirection: = xlPrevious). Face funcția de căutare pentru a căuta de la capătul foii, în funcție de rând. Odată ce găsește o celulă care conține ceva, se oprește. Folosim metoda Range.Row pentru a prelua ultimul rând din celula activă.

Avantajele funcției Găsire pentru obținerea ultimei celule cu date:

  1. Nu trebuie să știți punctul de plecare. Doar te aduce ultimul rând.
  2. Poate fi generic și poate fi folosit pentru a găsi ultima celulă cu date în orice foaie fără modificări.
  3. Poate fi folosit pentru a găsi orice ultimă instanță de text sau număr specific pe foaie.

Contra funcției Find ():

  1. Este urât. Prea multe argumente.
  2. Este lent.
  3. Nu se poate utiliza pentru a obține ultima coloană necompletată. Din punct de vedere tehnic, puteți. Dar devine prea lent.

3. Utilizarea funcției SpecialCells pentru a obține ultimul rând
Funcția SpecialCells cu argumentul xlCellTypeLastCell returnează ultima celulă utilizată. Să vedem mai întâi codul

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


Dacă rulați codul de mai sus, veți obține numărul rândului ultimei celule folosite.

Cum functioneaza?

Acesta este echivalentul vba al comenzii rapide CTRL + End în excel. Selectează ultima celulă utilizată. Dacă înregistrați macrocomenzile în timp ce apăsați CTRL + Terminare, veți primi acest cod.

Sub Macro1 () "Macro1 Macro" ActiveCell.SpecialCells (xlLastCell). Selectați End Sub 

Tocmai l-am folosit pentru a obține ultimul număr de rând al celulei utilizate.

Notă: După cum am spus mai sus, această metodă va returna ultima celulă utilizată, nu ultima celulă cu date. Dacă ștergeți datele din ultima celulă, codul de mai sus vba va returna aceeași referință a celulelor, deoarece a fost „ultima celulă utilizată”. Trebuie să salvați documentul mai întâi pentru a obține ultima celulă cu date folosind această metodă.

Ștergeți foile fără solicitări de confirmare folosind VBA în Microsoft Excel

Adăugați și salvați un registru de lucru nou folosind VBA în Microsoft Excel 2016

Afișați un mesaj pe bara de stare Excel VBA

Dezactivați mesajele de avertizare folosind VBA în Microsoft Excel 2016

Articole populare:

Funcția VLOOKUP în Excel

COUNTIF în Excel 2016

Cum se utilizează funcția SUMIF în Excel

Vei ajuta la dezvoltarea site-ului, partajarea pagina cu prietenii

wave wave wave wave wave