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.
Sintaksa
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.
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 u provjeri niza pronađe podudaranje niza , tada funkcija vraća položaj na kojem je pronađeno podudaranje.
Kako se koristi funkcija VBA INSTRREV?
Ovaj VBA INSTRREV Excel predložak možete preuzeti ovdje - VBA INSTRREV Excel PredložakPretpostavimo da imamo podatke o imenima filmova i njihovim redateljima. Želimo podijeliti imena redatelja.
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.
- Umetnut ćemo modul pomoću izbornika 'Umetni' .
- Stvorit ćemo potprogram pod nazivom "SplittingNames" .
- Treba nam 6 varijabli. Jedna za pohranu vrijednosti stanica, kojom ć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 koji ćemo koristiti za ispis vrijednosti u susjednim ćelijama.
- Da bismo saznali zadnji upotrijebljeni redak na listu, trebamo upotrijebiti sljedeći kod.
Ovaj će kôd prvo odabrati ćeliju B1, a zatim odabrati posljednju korištenu ćeliju u istom stupcu, a zatim ćemo varijabli 'LastRow' dodijeliti broj retka ćelije.
- Sada ćemo manipulirati svim stanicama u stupcu B, pokrenut ćemo petlju 'for' .
- Vrijednost stanica B stupca pohranit ćemo jednu po jednu u varijablu 's' kako bismo njima manipulirali.
- Moramo postaviti vrijednost varijable 'Stupac' na 3 jer moramo podijeljena imena upisati u C (3. stupac) i stupac dalje.
- 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:
- 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 i zadnji položaj razmaka. Pomoći će nam da pronađemo prvu i zadnju riječ u nizu.
Funkcija INSTR uzima argument kao u nastavku:
Pojedinosti argumenta
- Start: Iz kojeg položaja krenuti.
- String1: Moramo dati izraz izraza koji se pretražuje.
- String2: Moramo navesti izraz niza koji se traži.
U usporedbi s VbCompareMethod: Određivanje metode usporedbe. Po defaultu je binarna usporedba.
- Moramo koristiti VBA lijevi funkciju izvući lijeve likove iz niza. Upotrijebili smo 'Last Space-1' da bismo dobili lijeve znakove prije zadnjeg razmaka.
Moramo koristiti funkcije DESNO i LEN za izdvajanje pravih znakova iz niza nakon prvog razmaka.
Makronapisan je. Sada samo trebamo pokrenuti makronaredbu pomoću tipke F5 .
Kodirati:
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 "Like *" Tada FirstSpace = InStr (1, s, "") LastSPace = InStrRev (s, "") Sheet1.Cells (Red, 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.