VBA InStrRev - Kako uporabljati funkcijo Excel VBA InStrRev?

Excel VBA INSTRREV

Funkcija VBA INSTRREV , kot "In String Reverse" , vrne položaj prvega pojavljanja iskalnega niza (podniza) v drugem nizu, začenši s konca niza (od desne proti levi), od katerega iščemo iskalni niz.

Funkcija INSTRREV začne iskati niz, ki ga je mogoče iskati, s konca niza, v katerem moramo ugotoviti, vendar šteje položaj od začetka. Obstaja še ena funkcija INSTR VBA (pomeni „V nizu“ ), ki prav tako išče niz v drugem nizu in vrne položaj, vendar ta funkcija začne iskanje z začetka niza, iz katerega iščemo niz, ki ga je mogoče iskati.

INSTRREV in INSTR sta vgrajeni funkcija VBA / Text VBA v programu MS Excel. Uporabljamo jih lahko med pisanjem katerega koli makra v urejevalniku Microsoft Visual Basic.

Sintaksa

Kot lahko vidimo na zgornji sliki, obstajata 2 obvezna in 2 neobvezna argumenta.

  • StringCheck As String: To je zahtevani argument. Dati moramo nizni izraz, ki ga iščemo.
  • StringMatch As String: Ta argument je prav tako obvezen. Določiti moramo nizni izraz, ki ga iščemo.
  • Začni čim dlje = -1: To je neobvezen argument. Določimo številčni izraz. Privzeto traja -1, kar pomeni, da se iskanje začne na zadnjem položaju znaka. Če določimo katero koli pozitivno vrednost, na primer 80, začne iskanje iskati s konca niza v teh 80 znakih levo.
  • Primerjaj kot VbCompareMethod = vbBinaryCompare As Long: Ta argument ni obvezen.

Za ta argument lahko določimo naslednje vrednosti.

Vrnjene vrednosti

  1. Funkcija INSTRREV vrne 0, če je preverjanje nizov ničelne dolžine ali če ni mogoče najti ujemanja niza ali argument 'start' > dolžina ujemanja niza .
  2. Ta funkcija vrne "Null" , če preverjanje niz ali niz Tekma se je "Null".
  3. Če je niz nizov dolžine nič, se funkcija vrne v zagon .
  4. Če je med preverjanjem nizov najdeno ujemanje nizov , funkcija vrne položaj, na katerem je bilo najdeno ujemanje.

Kako uporabiti funkcijo VBA INSTRREV?

Recimo, da imamo podatke o imenih filmov in njihovih režiserjih. Želimo ločiti imena režiserjev.

Podatke imamo v 1201 vrsticah. Če to nalogo opravimo ročno, bo trajalo veliko časa.

Za enako bomo uporabili kodo VBA. Koraki so:

  • Klikniti moramo na ukaz 'Visual Basic', ki je na voljo v skupini 'Code' na zavihku 'Developer' , lahko pa pritisnemo Alt + F11, da odpremo urejevalnik Visual Basic.
  • Modul bomo vstavili z uporabo menija 'Vstavi' .
  • Ustvarili bomo podprogram z imenom "SplittingNames".
  • Za shranjevanje vrednosti celic, s katerimi bomo manipulirali, potrebujemo 6 spremenljivk - eno. Drugi za shranjevanje položaja prvega presledka v nizu, tretji za shranjevanje položaja zadnjega presledka v nizu, četrti za shranjevanje zadnje številke vrstice, peti in šesti za vrstico in stolpec, ki ga bomo uporabili za tiskanje vrednosti v sosednjih celic.
  • Če želite izvedeti zadnjo uporabljeno vrstico na listu, moramo uporabiti naslednjo kodo.

Ta koda bo najprej izbrala celico B1 in nato izbrala zadnjo uporabljeno celico v istem stolpcu, nato pa spremenljivki 'LastRow' dodeli številko vrstice celice.

  • Zdaj bomo za manipulacijo vseh celic v stolpcu B izvedli zanko 'for' .
  • Vrednost celic stolpca B od vrstice 2 do vrstice 1201 bomo shranili eno za drugo v spremenljivki 's', da bomo z njimi upravljali.
  • Moramo določiti vrednost spremenljive "stolpcu" do 3, kot smo morali napisati imena delih v C (3 rd stolpec) in stolpec naprej.
  • Če je niz samo ena beseda, kar pomeni, da v nizu ni prostora, potem želimo niz kot izhod. Za to bomo pogoj določili z uporabo izjave "If and Else" z zvezdico (ki označuje enega ali več znakov), kot sledi:
  • Če je v nizu prostor, ga želimo razdeliti. Da bi storili enako, smo uporabili funkciji INSTR in INSTRREV, da bi ugotovili prvi položaj presledka oziroma zadnji presledek. Pomagala nam bo najti prvo besedo in zadnjo besedo v nizu.

Funkcija INSTR vzame argument kot spodaj:

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 Row As Long Dim Column Long Sheet1.Range ("B1"). Select Selection.End (xlDown) .Select LastRow = ActiveCell. Vrstica za vrstico = 2 do LastRow s = List1.Cells (Row, 2). Stolpec vrednosti = 3 Če je s Všeč "* *", potem 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, Stolpec) .Vrednost = s Konec, če je naslednji konec Pod

Zdaj imamo rezultat.

Zanimive Članki...