VBA InStrRev | Kako se koristi funkcija Excel VBA InStrRev?

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

  1. Funkcija INSTRREV vraća 0 ako je provjera niza  nulte duljine ili ako  nije pronađeno podudaranje niza ili argument 'start' > duljina podudaranja niza .
  2. Ova funkcija se vraća „Null” ako se niz provjera  ili niz utakmica  je „Null” .
  3. Ako je podudaranje niza nulte duljine, tada se funkcija vraća na početak .
  4. 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žak

Pretpostavimo 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.