3 најбоља начина за проналажење последњег празног реда и колоне помоћу ВБА

Anonim

Проналажење последњег коришћеног реда и колоне један је од основних и важних задатака за било коју аутоматизацију у екцелу помоћу ВБА. За аутоматско састављање листова, радних свезака и сређивање података морате пронаћи ограничење података на листовима.

Овај чланак ће објаснити сваки начин проналажења последњег реда и колоне у Екцелу на најлакши начин.
1. Пронађите последњи ред који није празан у колони користећи Ранге.Енд
Прво да видимо код. Објаснићу то писмом.

Суб гетЛастУседРов () Дим ласт_ров Ас Интегер ласт_ров = Ћелије (Ровс.Цоунт, 1) .Енд (клУп) .Ров ‘Овај ред добија последњи ред Дебуг.Принт ласт_ров Енд Суб

Горњи пододнос налази последњи ред у колони 1.

Како то ради?
То је као да одете на последњи ред у листу, а затим притиснете пречицу ЦТРЛ+УП.
Ћелије (Ровс.Цоунт, 1): Овај део бира ћелију у колони А. Редови.Цоунт даје 1048576, што је обично последњи ред у Екцел листу.

Ћелије (1048576, 1)

.Крај (клУп): Крај је метода класе опсега која се користи за кретање по листовима до крајева. клУп је променљива која говори смер. Ова команда заједно бира последњи ред са подацима.

Ћелије (Ровс.Цоунт, 1) .Енд (клУп)

.Ред: ров враћа број реда изабране ћелије. Дакле, добијамо број реда последње ћелије са подацима у колони А. у нашем примеру је 8.

Погледајте како је лако пронаћи последње редове са подацима. Ова метода ће изабрати последњи ред у подацима, без обзира на празне ћелије испред њих. На слици можете видети да само ћелија А8 има податке. Све претходне ћелије су празне осим А4.

Изаберите последњу ћелију са подацима у колони
Ако желите да изаберете последњу ћелију у колони А, само уклоните „.ров“ са краја и напишите .селецт.

Суб гетЛастУседРов () Ћелије (Ровс.Цоунт, 1) .Енд (клУп). Одаберите ‘Ова линија бира последњу ћелију у колони Енд Суб

Команда „.Селецт“ бира активну ћелију.
Преузми колону адресе последње ћелије
Ако желите да добијете адресу последње ћелије у колони А, само уклоните „.ров“ са краја и напишите .адресу.

Суб гетЛастУседРов () адд = Целлс (Ровс.Цоунт, 1) .Енд (клУп) .аддресс ‘Ова линија бира последњу ћелију у колони Дебуг.принт адд Енд Суб

Опсег.Адреса функција враћа адресу активне ћелије.
Пронађи последњу колону која није празна у реду
То је скоро исто као проналажење последње ћелије која није празна у колони. Овде добијамо број колоне последње ћелије са подацима у 4. реду.

Суб гетЛастУседЦол () Дим ласт_цол Ас Интегер ласт_цол = Целлс (4, Цолумнс.Цоунт) .Енд (клТоЛефт) .Цолумн 'Ова линија добија последњу колону Дебуг.Принт ласт_цол Енд Суб


На слици можете видети да враћа редни број колоне последње ћелије која није празна у 4. реду. Што је 4.
Како то ради?

Па, механика је иста као проналажење последње ћелије са подацима у колони. Управо смо користили кључне речи повезане са колонама.
Изаберите Скуп података у програму Екцел помоћу ВБА
Сада знамо како да добијемо последњи ред и последњу колону програма Екцел користећи ВБА. Помоћу тога можемо лако изабрати табелу или скуп података. Након што изаберемо скуп података или табелу, можемо извршити неколико операција над њима, попут цопи-пасте, обликовања, брисања итд.
Овде имамо скуп података. Ови подаци се могу проширити према доле. Фиксирана је само почетна ћелија, а то је Б4. Последњи ред и колона нису фиксни. Морамо да изаберемо целу табелу динамички користећи вба.

ВБА код за избор табеле са празним ћелијама

Суб селецт_табле () Дим ласт_ров, ласт_цол Ас Лонг 'Преузми последњи ред ласт_ров = Ћелије (Ровс.Цоунт, 2) .Енд (клУп) .Ров' Гет ласт цолумн ласт_цол = Целлс (4, Цолумнс.Цоунт) .Енд (клТоЛефт) . Колона 'Изабери цео опсег табеле (ћелије (4, 2), ћелије (ласт_ров, ласт_цол)). Изабери Енд Суб

Када ово покренете, цела табела ће бити изабрана у делићу секунде. Можете додати нове редове и колоне. Увек ће изабрати целокупне податке.

Предности ове методе:

  1. То је лако. Буквално смо написали само један ред да бисмо добили последњи ред са подацима. Ово олакшава.
  2. Брзо. Мање реда кода, мање времена.
  3. Лако разумети.
  4. Ради савршено ако имате неспретну табелу података са фиксном почетном тачком.

Недостаци Ранге.Енд методе:

  1. Полазна тачка мора бити позната.
  2. Можете добити само последњу ћелију која није празна у познатом реду или колони. Када ваша почетна тачка није фиксна, биће бескорисна. Што је мање вероватно да ће се догодити.

2. Пронађи последњи ред помоћу функције Финд ()
Прво да видимо код.

 Суб ласт_ров () ластРов = АцтивеСхеет.Целлс.Финд ("*", редослед претраге: = клБиРовс, смер претраге: = клПретходни). 


Као што видите на слици, овај код тачно враћа последњи ред.
Како то ради?
Овде користимо функцију проналажења за проналажење било које ћелије која садржи било шта помоћу оператора за замјенске картице "*". Звездица се користи за проналажење било чега, текста или броја.

Постављамо редослед претраживања по редовима (редослед претраге: = клБиРовс). Екцелу вба такође кажемо смер претраживања као клПревиоус (сеарцхдирецтион: = клПревиоус). Омогућава функцију проналажења за претраживање са краја листа, по редовима. Када пронађе ћелију која садржи било шта, зауставља се. Користимо методу Ранге.Ров за преузимање последњег реда из активне ћелије.

Предности функције Финд за добијање последње ћелије са подацима:

  1. Не морате знати полазну тачку. Добићете последњи ред.
  2. Може бити генерички и може се користити за проналажење последње ћелије са подацима у било ком листу без икаквих промена.
  3. Може се користити за проналажење последње инстанце одређеног текста или броја на листу.

Недостаци функције Финд ():

  1. То је ружно. Превише аргумената.
  2. То је споро.
  3. Не може се користити за добијање последње колоне која није празна. Технички, можете. Али то постаје преспоро.

3. Коришћење функције СпециалЦеллс за добијање последњег реда
Функција СпециалЦеллс са аргументом клЦеллТипеЛастЦелл враћа последњу коришћену ћелију. Хајде прво да видимо код

Суб спл_ласт_ров_ () ластРов = АцтивеСхеет.Целлс.Посебне ћелије (клЦеллТипеЛастЦелл).Ров Дебуг.Принт ластРов Енд Суб


Ако покренете горњи код, добићете број реда последње коришћене ћелије.

Како то ради?

Ово је вба еквивалент пречице ЦТРЛ+Енд у Екцелу. Одабире последњу коришћену ћелију. Ако снимите макро притиском на ЦТРЛ+Енд, добићете овај код.

Суб Мацро1 () '' 'Мацро1 Мацро' 'АцтивеЦелл.СпециалЦеллс (клЛастЦелл). Одаберите Енд Суб 

Управо смо га користили за добијање броја реда последње коришћене ћелије.

Белешка: Као што сам горе рекао, ова метода ће вратити последњу ћелију, а не последњу ћелију са подацима. Ако избришете податке у последњој ћелији, изнад вба кода ће и даље враћати исту референцу ћелија, јер је то била „последња коришћена ћелија“. Морате прво да сачувате документ да бисте добили последњу ћелију са подацима помоћу ове методе.

Брисање листова без упита за потврду помоћу ВБА у програму Мицрософт Екцел

Додајте и сачувајте нову радну свеску помоћу ВБА у програму Мицрософт Екцел 2016

Прикажите поруку на статусној траци програма Екцел ВБА

Искључите поруке упозорења помоћу ВБА у програму Мицрософт Екцел 2016

Популарни чланци:

Функција ВЛООКУП у Екцелу

ЦОУНТИФ у програму Екцел 2016

Како се користи функција СУМИФ у програму Екцел