Excel VBA INSTRREV
VBA INSTRREV funkcija, kao što je "In String Reverse" , vraća položaj prvog pojavljivanja niza za pretraživanje (podniza) u drugom nizu, počevši od kraja niza (zdesna na lijevo) od kojeg tražimo pretraživi niz.
Funkcija INSTRREV započinje traženje niza koji se može pretraživati s kraja niza u kojem trebamo to saznati, ali računa položaj od početka. Postoji još jedna funkcija INSTR VBA (skraćenica od "U nizu" ) koja također traži niz u drugom nizu i vraća položaj, ali ova funkcija započinje pretraživanje s početka niza iz kojeg tražimo niz koji se može pretraživati.
INSTRREV i INSTR , obje su ugrađene funkcije String / Text VBA u programu MS Excel. Možemo ih koristiti tijekom pisanja bilo koje makronaredbe u programu Microsoft Visual Basic Editor.
![](https://cdn.know-base.net/4942145/vba_instrrev_how_to_use_excel_vba_instrrev_function_.png.webp)
Sintaksa
![](https://cdn.know-base.net/4942145/vba_instrrev_how_to_use_excel_vba_instrrev_function__2.png.webp)
Kao što možemo vidjeti na gornjoj slici, postoje 2 obavezna i 2 neobavezna argumenta.
- StringCheck As String: Ovo je potreban argument. Moramo dati izraz izraza koji se pretražuje.
- StringMatch As String: Ovaj je argument također potreban. Moramo navesti izraz niza koji se traži.
- Započni dugo = -1: Ovo je neobavezni argument. Određujemo numerički izraz. Prema zadanim postavkama potrebno je -1, što znači da pretraživanje započinje na zadnjem položaju znaka. Ako odredimo bilo koju pozitivnu vrijednost poput 80, tada započinje pretraživanje s kraja niza u tih 80 znakova lijevo.
- Usporedi kao VbCompareMethod = vbBinaryCompare As Long: Ovaj je argument neobavezan.
![](https://cdn.know-base.net/4942145/vba_instrrev_how_to_use_excel_vba_instrrev_function__3.png.webp)
Za ovaj argument možemo odrediti sljedeće vrijednosti.
Povratne vrijednosti
- Funkcija INSTRREV vraća 0 ako je provjera niza nulte duljine ili ako nije pronađeno podudaranje niza ili argument 'start' > duljina podudaranja niza .
- Ova funkcija se vraća „Null” ako se niz provjera ili niz utakmica je „Null”.
- Ako je podudaranje niza nulte duljine, tada se funkcija vraća na početak .
- Ako se podudaranje niza pronađe unutar provjere niza , tada funkcija vraća položaj na kojem je pronađeno podudaranje.
Kako se koristi funkcija VBA INSTRREV?
Pretpostavimo da imamo podatke o imenima filmova i njihovim redateljima. Želimo podijeliti imena redatelja.
![](https://cdn.know-base.net/4942145/vba_instrrev_how_to_use_excel_vba_instrrev_function__4.png.webp)
Podatke imamo u 1201 redu. Ako ovaj zadatak obavimo ručno, trebat će vam puno vremena.
Da bismo učinili isto, poslužit ćemo se VBA kodom. Koraci su:
- Moramo kliknuti na naredbu 'Visual Basic' koja je dostupna u grupi 'Code' na kartici 'Developer' ili možemo pritisnuti Alt + F11 da otvorimo uređivač Visual Basic.
![](https://cdn.know-base.net/4942145/vba_instrrev_how_to_use_excel_vba_instrrev_function__5.png.webp)
- Umetnut ćemo modul pomoću izbornika 'Umetni' .
![](https://cdn.know-base.net/4942145/vba_instrrev_how_to_use_excel_vba_instrrev_function__6.png.webp)
- Stvorit ćemo potprogram pod nazivom "SplittingNames".
![](https://cdn.know-base.net/4942145/vba_instrrev_how_to_use_excel_vba_instrrev_function__7.png.webp)
- Trebamo 6 varijabli - jednu za pohranu vrijednosti stanica, kojima ćemo manipulirati. Drugo za pohranu položaja prvog razmaka u nizu, treće za spremanje položaja zadnjeg razmaka u nizu, četvrto za spremanje zadnjeg broja retka, peto i šesto za redak i stupac, koje ćemo koristiti za ispis vrijednosti u susjednom Stanice.
![](https://cdn.know-base.net/4942145/vba_instrrev_how_to_use_excel_vba_instrrev_function__8.png.webp)
- Da bismo saznali zadnji upotrijebljeni redak na listu, trebamo upotrijebiti sljedeći kod.
![](https://cdn.know-base.net/4942145/vba_instrrev_how_to_use_excel_vba_instrrev_function__9.png.webp)
Ovaj će kôd prvo odabrati ćeliju B1, a zatim odabrati posljednju korištenu ćeliju u istom stupcu, a zatim varijabli "LastRow" dodijeliti broj retka ćelije.
- Sada ćemo manipulirati svim stanicama u stupcu B, pokrenut ćemo petlju 'for' .
![](https://cdn.know-base.net/4942145/vba_instrrev_how_to_use_excel_vba_instrrev_function__10.png.webp)
- Vrijednost stanica B stupca pohranit ćemo jednu po jednu u varijablu 's' kako bismo njima manipulirali.
![](https://cdn.know-base.net/4942145/vba_instrrev_how_to_use_excel_vba_instrrev_function__11.png.webp)
- Moramo postaviti vrijednost varijable "Stupac" na 3 jer moramo podijeljena imena upisati u C ( 3. stupac) i stupac dalje.
![](https://cdn.know-base.net/4942145/vba_instrrev_how_to_use_excel_vba_instrrev_function__12.png.webp)
- Ako je niz samo jedna riječ, što znači da u nizu nema mjesta, tada želimo sam niz kao izlaz. Za to ćemo odrediti uvjet koristeći 'If and Else statement' sa zvjezdicom (označavajući jedan ili više znakova) kako slijedi:
![](https://cdn.know-base.net/4942145/vba_instrrev_how_to_use_excel_vba_instrrev_function__13.png.webp)
- Ako u nizu ima mjesta, tada želimo podijeliti niz. Da bismo učinili isto, koristili smo funkciju INSTR i INSTRREV kako bismo pronašli prvi položaj razmaka, odnosno zadnji razmak. Pomoći će nam da pronađemo prvu, odnosno zadnju riječ u nizu.
![](https://cdn.know-base.net/4942145/vba_instrrev_how_to_use_excel_vba_instrrev_function__14.png.webp)
Funkcija INSTR uzima argument kao u nastavku:
![](https://cdn.know-base.net/4942145/vba_instrrev_how_to_use_excel_vba_instrrev_function__15.png.webp)
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.
![](https://cdn.know-base.net/4942145/vba_instrrev_how_to_use_excel_vba_instrrev_function__16.png.webp)
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 Red As Long Dim Column Long Sheet1.Range ("B1"). Odaberite Selection.End (xlDown) .Select LastRow = ActiveCell. Red za red = 2 do LastRow s = List1.Cells (Row, 2). Vrijednost stupac = 3 Ako je s Sviđa mi se "* *" Tada 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, Stupac) .Vrijednost = s End If Next End Sub
Sad imamo rezultat.
![](https://cdn.know-base.net/4942145/vba_instrrev_how_to_use_excel_vba_instrrev_function__17.png.webp)