Екцел ВБА ИНСТРРЕВ
ВБА ИНСТРРЕВ функција, као скраћеница од „Ин Стринг Реверсе“ , враћа положај првог појављивања низа за претрагу (подниз) у другом низу, почевши од краја низа (здесна налево) од којег тражимо претраживи низ.
Функција ИНСТРРЕВ започиње претрагу низа који се може претраживати с краја низа у којем треба да сазнамо, али рачуна позицију од почетка. Постоји још једна ИНСТР ВБА функција (скраћеница од „У низу“ ) која такође тражи низ у другом низу и враћа позицију, али ова функција започиње претрагу од почетка низа из којег тражимо низ који се може претраживати.
ИНСТРРЕВ и ИНСТР , обје су уграђене функције Стринг / Тект ВБА у програму МС Екцел. Можемо их користити док пишемо било који макро у програму Мицрософт Висуал Басиц Едитор.

Синтакса

Као што видимо на горњој слици, постоје 2 обавезна и 2 необавезна аргумента.
- СтрингЦхецк Ас Стринг: Ово је потребан аргумент. Морамо дати израз израза који се претражује.
- СтрингМатцх Ас Стринг: Овај аргумент је такође потребан. Морамо навести израз низа који се тражи.
- Започни дуго = -1: Ово је опционални аргумент. Одређујемо нумерички израз. Подразумевано је потребно -1, што значи да претрага започиње на последњем месту знака. Ако наведемо било коју позитивну вредност, попут 80, тада започиње претрагу са краја низа у тих 80 знакова лево.
- Упореди као ВбЦомпареМетход = вбБинариЦомпаре Ас Лонг: Овај аргумент није обавезан.

За овај аргумент можемо одредити следеће вредности.
Повратне вредности
- Функција ИНСТРРЕВ враћа 0 ако је провјера низа нулте дужине или ако подударање низа није пронађено или аргумент 'старт' > дужина подударања низа .
- Ова функција враћа 'Нула' ако чек низ или низ утакмица је "Нула".
- Ако је подударање низа нулте дужине, тада се функција враћа на почетак .
- Ако се подударање низа пронађе у оквиру провјере низа , тада функција враћа положај на којем је пронађено подударање.
Како се користи функција ВБА ИНСТРРЕВ?
Претпоставимо да имамо податке о именима филмова и њиховим редитељима. Желимо да раздвојимо имена редитеља.

Податке имамо у 1201 реду. Ако овај задатак обавимо ручно, одузеће вам много времена.
Да бисмо учинили исто, користићемо ВБА код. Кораци су:
- Морамо да кликнемо на команду „Висуал Басиц“ која је доступна у групи „Цоде“ на картици „Девелопер“ или можемо притиснути Алт + Ф11 да отворимо едитор за Висуал Басиц.

- Убацићемо модул помоћу менија „Убаци“ .

- Направићемо потпрограм под називом „СплиттингНамес“.

- Потребно нам је 6 променљивих - једна за чување вредности ћелија, којима ћемо манипулисати. Друго за чување положаја првог размака у низу, треће за чување положаја последњег размака у низу, четврто за чување последњег броја реда, пето и шесто за ред и колону, које ћемо користити за испис вредности у суседном ћелије.

- Да бисмо сазнали последњи коришћени ред у листу, треба да користимо следећи код.

Овај код ће прво одабрати ћелију Б1, а затим изабрати последњу кориштену ћелију у истој колони, а затим променљивој „ЛастРов“ додељујемо број реда ћелије.
- Сада ћемо манипулисати свим ћелијама у колони Б, покренућемо петљу 'фор' .

- Вредност ћелија Б колоне чуваћемо једну по једну у променљивој 'с' да бисмо њима манипулисали.

- Морамо подесити вредност променљиве „Колона“ на 3, јер треба да напишемо имена поделе у Ц ( 3. колона) и колону даље.

- Ако је низ само једна реч, што значи да у низу нема простора, тада желимо сам низ као излаз. За ово ћемо одредити услов користећи „Иф анд Елсе статемент“ са звездицом (означавајући један или више знакова) на следећи начин:

- Ако у низу има простора, онда желимо да раздвојимо низ. Да бисмо учинили исто, користили смо функцију ИНСТР и ИНСТРРЕВ како бисмо пронашли прву позицију размака, односно позицију размака. Помоћи ће нам да пронађемо прву и последњу реч у низу.

Функција ИНСТР узима аргумент као испод:

Детаљи аргумента
- Старт: Са које позиције кренути.
- Стринг1: Морамо дати израз израза који се претражује.
- Стринг2: Морамо навести израз низа који се тражи.
У поређењу са ВбЦомпареМетход: Одређивање методе упоређивања. Подразумевано је бинарно упоређивање.
- Морамо да користимо ВБА ЛЕВИ функцију за издвајање леве ликове из низа. Користили смо „Последњи размак-1“ да бисмо добили леве знакове пре последњег размака.
Морамо користити функције ДЕСНО и ЛЕН да бисмо извукли праве знакове из низа након првог размака.

Макро је написан. Сада само треба да покренемо макро помоћу тастера Ф5 .
Шифра:
Суб СплиттингНамес () Дим с Ас Стринг Дим ФирстСпаце Ас Лонг Дим ЛастСПаце Ас Лонг Дим ЛастРов Ас Лонг Дим Ред Ас Лонг Дим Цолумн Ас Лонг Схеет1.Ранге ("Б1"). Селецт Селецтион.Енд (клДовн) .Селецт ЛастРов = АцтивеЦелл. Ред за ред = 2 до ЛастРов с = Схеет1.Целлс (Ров, 2) .Валуе Цолумн = 3 Иф с Лике "* *" тхен ФирстСпаце = ИнСтр (1, с, "") ЛастСПаце = ИнСтрРев (с, "") Схеет1.Целлс (Ред, Цолумн) .Валуе = Лефт (с, ЛастСПаце - 1) Схеет1.Целлс (Ров, Цолумн + 1) .Валуе = Ригхт (с, Лен (с) - ФирстСпаце) Елсе Схеет1.Целлс (Ров, Колона) .Валуе = с Енд Иф Нект Енд Суб
Сад имамо резултат.
