Excel VBA INSTRREV
Функцията VBA INSTRREV , както означава „In String Reverse“ , връща позицията на първата поява на низ за търсене (подниз) в друг низ, започвайки от края на низа (отдясно наляво), от който търси низ за търсене.
Функцията INSTRREV започва да търси търсения низ от края на низа, в който трябва да разберем, но отчита позицията от самото начало. Има още една функция INSTR VBA (означава „В низ“ ), която също търси низ в друг низ и връща позицията, но тази функция започва търсенето от началото на низа, от който търсим низ за търсене.
INSTRREV и инстр , и двете са вградени String / Текст VBA функция на MS Excel. Можем да ги използваме, докато пишем произволен макрос в Microsoft Visual Basic Editor.

Синтаксис

Както виждаме на горното изображение, има 2 задължителни и 2 незадължителни аргумента.
- StringCheck As String: Това е задължителният аргумент. Трябва да дадем низ, който се търси.
- StringMatch As String: Този аргумент също е задължителен. Трябва да посочим низовия израз, който се търси.
- Start As Long = -1: Това е незадължителен аргумент. Посочваме числовия израз. По подразбиране отнема -1, което означава, че търсенето започва от последната позиция на символа. Ако посочим някаква положителна стойност като 80, тогава тя започва да търси от края на низа в тези 80 знака отляво.
- Сравнение като VbCompareMethod = vbBinaryCompare As Long: Този аргумент не е задължителен.

Можем да посочим следните стойности за този аргумент.
Възвръщаеми стойности
- Функцията INSTRREV връща 0, ако проверката на низове е с нулева дължина или не е намерено съвпадение на низа или аргумент „старт“ > дължина на съвпадение на низ .
- Тази функция връща „Null“, ако проверката на низове или съответствието на низовете е „Null“.
- Ако съвпадението на низа е с нулева дължина, тогава функцията се връща към старт .
- Ако съвпадение на низ е намерено в рамките на проверка на низ , тогава функцията връща позицията, на която е намерено съвпадението.
Как да използвам функцията VBA INSTRREV?
Да предположим, че разполагаме с данни за имена на филми и техните режисьори. Искаме да разделим имената на режисьори.

Имаме данни в 1201 реда. Ако изпълним тази задача ръчно, това ще отнеме много време.
За да направим същото, ще използваме VBA кода. Стъпките са:
- Трябва да кликнете върху командата „Visual Basic“, налична в групата „Код“ в раздела „Разработчик“ , или можем да натиснем Alt + F11, за да отворим редактора на Visual Basic.

- Ще вмъкнем модул, използвайки менюто "Вмъкване" .

- Ще създадем подпрограма с име „Разделяне на имена “.

- Трябват ни 6 променливи - една за съхраняване на стойностите на клетките, които ще манипулираме. Второ за съхраняване на позицията на първо интервал в низа, трето за съхраняване на позицията на последното интервал в низа, четвърто за съхраняване на последния номер на ред, пето и шесто за ред и колона, което ще използваме за отпечатване на стойностите в съседни клетки.

- За да разберем последния използван ред в листа, трябва да използваме следния код.

Този код първо ще избере клетката B1 и след това ще избере последната използвана клетка в същата колона и след това ще присвоим номера на реда на клетката на променливата „LastRow“.
- Сега, за да манипулираме всички клетки в колоната B, ще стартираме цикъл „for“ .

- Ще съхраняваме стойността на клетките на колона B от ред 2 до ред 1201 една по една в променливата на 's', за да ги манипулираме.

- Трябва да зададем стойността на променливата 'Column' на 3, тъй като трябва да запишем разделените имена в C (3 -та колона) и колона напред.

- Ако низът е само една дума, което означава, че в низа няма място, тогава ние искаме самия низ като изход. За това ще определим условието, използвайки „If and Else statement“ със знак звездичка (обозначаващ един или повече знака), както следва:

- Ако в низа има място, тогава искаме да разделим низа. За да направи същото, ние сме използвали инстр и INSTRREV функция и двете, за да разберете първи пространство позиция и последно място позиция, съответно. Това ще ни помогне да намерим съответно първата и последната дума в низа.

Функцията INSTR приема аргумента по-долу:

Argument Details
- Start: From which position to start.
- String1: We need to give string expression being searched.
- String2: We need to specify string expression being searched for.
Compared as VbCompareMethod: Specifying Comparing method. By default, it is binary compare.
- We need to use the VBA LEFT function to extract left characters from the string. We have used ‘Last Space-1’ to get the left characters before the last space.
We need to use the RIGHT and LEN functions to extract the right characters from the string after the first space.

Macro is written. Now we just need to run the macro using the F5 key.
Code:
Sub SplittingNames () Dim s As String Dim FirstSpace As Long Dim LastSPace As Long Dim LastRow As Long Dim Row As Long Dim Column As Long Sheet1.Range ("B1"). Select Selection.End (xlDown) .Select LastRow = ActiveCell. Ред за ред = 2 до LastRow s = Sheet1.Cells (Row, 2). Стойност на колона = 3 Ако s Like "* *" Тогава FirstSpace = InStr (1, s, "") LastSPace = InStrRev (s, "") Sheet1.Cells (Row, Column) .Value = Left (s, LastSPace - 1) Sheet1.Cells (Row, Column + 1) .Value = Right (s, Len (s) - FirstSpace) Else Sheet1.Cells (Row, Колона). Стойност = s Край Ако следващ край Под
Сега имаме резултат.
