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
- 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 .
- Ta funkcija vrne "Null" , če preverjanje niz ali niz Tekma se je "Null" .
- Če je niz nizov dolžine nič, se funkcija vrne v zagon .
- Č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 ExcelRecimo, 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.