VBA InStrRev | Как да използвам функцията Excel VBA InStrRev?

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: Този аргумент не е задължителен.

Можем да посочим следните стойности за този аргумент.

Възвръщаеми стойности

  1. Функцията INSTRREV връща 0, ако проверката  на низове е с нулева дължина или  не е намерено съвпадение на низа или аргумент „старт“ > дължина на съвпадение на низове .
  2. Тази функция връща „Null“, ако проверката на низове  или съответствието на низовете  е „Null“ .
  3. Ако съвпадението на низа е с нулева дължина, тогава функцията се връща към старт .
  4. Ако в рамките на проверка на низове бъде открито съвпадение на низ , функцията връща позицията, в която е намерено съвпадение.

Как да използвам функцията VBA INSTRREV?

Можете да изтеглите този шаблон на VBA INSTRREV Excel тук - VBA INSTRREV шаблон на Excel

Да предположим, че имаме данни за имена на филми и техните режисьори. Искаме да разделим имената на режисьори.

Имаме данни в 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 приема аргумента по-долу:

Подробности за аргумента

  • Старт: От коя позиция да започнете.
  • String1: Трябва да дадем низ, който се търси.
  • String2: Трябва да посочим низовия израз, който се търси.

В сравнение с VbCompareMethod: Посочване на метод за сравнение. По подразбиране това е двоично сравнение.

  • Ние трябва да използвате VBA НАЛЯВО функцията за извличане на левите знаци от низа. Използвахме „Last Space-1“, за да получим левите символи преди последното интервал.

Трябва да използваме функциите RIGHT и LEN, за да извлечем правилните символи от низа след първото интервал.

Написан е макрос. Сега просто трябва да стартираме макроса с помощта на клавиша F5 .

Код:

 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 Край Ако следващ край Под 

Сега имаме резултат.