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

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".
  • 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.
  • 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 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, odnosno zadnji razmak. Pomoći će nam da pronađemo prvu, odnosno zadnju riječ u nizu.

Funkcija INSTR uzima argument kao u nastavku:

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

Zanimljivi članci...