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 funkciji VBA String / Text 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 mestu znaka. Če določimo katero koli pozitivno vrednost, kot je 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 najdenega ujemanja nizov 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 najdeno ujemanje.

Kako uporabiti funkcijo VBA INSTRREV?

To predlogo VBA INSTRREV Excel lahko prenesete tukaj - Predloga VBA INSTRREV Excel

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', ali pa lahko pritisnemo Alt + F11, da odpremo urejevalnik Visual Basic.

  • Modul bomo vstavili z uporabo menija 'Vstavi' .

  • Ustvarili bomo podprogram z imenom "SplittingNames" .

  • Potrebujemo 6 spremenljivk. Eno za shranjevanje vrednosti celic, s katerimi bomo manipulirali. 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 celicah.

  • Če želite izvedeti zadnjo uporabljeno vrstico na listu, moramo uporabiti naslednjo kodo.

Ta koda bo najprej izbrala celico B1, nato izbrala zadnjo uporabljeno celico v istem stolpcu in nato spremenljivki 'LastRow' dodelili š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.

  • Vrednost spremenljivke 'Stolpec' moramo nastaviti na 3, saj moramo razdeljena imena zapisati v C (3. 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. Za isto smo uporabili funkciji INSTR in INSTRREV, da bi ugotovili prvi presledek in zadnji razmik. Pomagala nam bo najti prvo besedo in zadnjo besedo v nizu.

Funkcija INSTR vzame argument kot spodaj:

Podrobnosti argumenta

  • Začetek: iz katerega položaja začeti.
  • String1: dati moramo nizni izraz, ki ga iščemo.
  • String2: Navesti moramo niz niza, ki ga iščemo.

V primerjavi z VbCompareMethod: Določanje metode primerjave. Privzeto je binarna primerjava.

  • Moramo uporabiti VBA LEVO funkcijo za pridobivanje levo znake iz niza. Uporabili smo 'Last Space-1', da dobimo leve znake pred zadnjim presledkom.

Za izločanje pravih znakov iz niza po prvem presledku moramo uporabiti funkciji RIGHT in LEN .

Makro je napisan. Zdaj moramo samo zagnati makro s tipko F5 .

Koda:

 Sub SplittingNames () Dim s As String Dim FirstSpace As Long Dim LastSPace As Long Dim LastRow As Long Dim Row As Long Dim Column As Long Sheet1.Range ("B1"). Izberite Selection.End (xlDown). 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.