VBA InStrRev | Kuinka käyttää Excel VBA InStrRev -toimintoa?

Excel VBA INSTRREV

VBA INSTRREV -funktio, joka tarkoittaa 'merkkijonossa taaksepäin' , palauttaa hakumerkkijonon (alimerkkijonon) ensimmäisen esiintymisen sijainnin toisessa merkkijonossa alkaen merkkijonon päästä (oikealta vasemmalle), jota etsimme haettava merkkijono.

INSTRREV- funktio alkaa etsiä haettavaa merkkijonoa merkkijonon päästä, jonka meidän on selvitettävä, mutta laskee sijainnin alusta alkaen. On vielä yksi INSTR vba -funktio (tarkoittaa 'merkkijonoa' ), joka myös etsii merkkijonoa toisesta merkkijonosta ja palauttaa sijainnin, mutta tämä toiminto aloittaa haun merkkijonon alusta, josta etsimme haettavaa merkkijonoa.

INSTRREV ja INSTR , molemmat ovat MS Excelin sisäänrakennettu String / Text VBA -toiminto . Voimme käyttää niitä kirjoittaessamme mitä tahansa makroa Microsoft Visual Basic Editorissa.

Syntaksi

Kuten voimme nähdä yllä olevasta kuvasta, on 2 pakollista ja 2 valinnaista argumenttia.

  • StringCheck As String: Tämä on pakollinen argumentti. Meidän on annettava merkkijono-lauseke.
  • StringMatch as String: Tämä argumentti vaaditaan myös. Meidän on määritettävä etsittävä merkkijonolauseke.
  • Aloita niin kauan = -1: Tämä on valinnainen argumentti. Määritämme numeerisen lausekkeen. Oletuksena se vie -1, mikä tarkoittaa, että haku alkaa viimeisestä merkkipaikasta. Jos määritämme minkä tahansa positiivisen arvon, kuten 80, se alkaa etsiä merkkijonon lopusta niissä 80 merkissä vasemmalla.
  • Vertaa nimellä VbCompareMethod = vbBinaryCompare As Long: Tämä argumentti on valinnainen.

Voimme määrittää seuraavat arvot tälle argumentille.

Palautusarvot

  1. INSTRREV- funktio palauttaa arvon 0, jos merkkijonon tarkistus  on nollan pituinen tai merkkijonoa  ei löydy tai "aloitus" -argumentti> merkkijonon pituus .
  2. Tämä toiminto palauttaa arvon "tyhjä", jos merkkijonon tarkistus  tai merkkijono  on "tyhjä" .
  3. Jos merkkijono-ottelu on nolla, funktio palaa alkuun .
  4. Jos merkkijonotarkistus sisältää merkkijonovastaavuuden , funktio palauttaa sijainnin, josta vastaavuus löytyy.

Kuinka käyttää VBA INSTRREV -toimintoa?

Voit ladata tämän VBA INSTRREV Excel -mallin täältä - VBA INSTRREV Excel -malli

Oletetaan, että meillä on tietoja elokuvien nimistä ja niiden ohjaajista. Haluamme jakaa ohjaajien nimet.

Meillä on tietoja 1201 rivillä. Jos teemme tämän tehtävän manuaalisesti, se vie paljon aikaa.

Tehdäkseen samoin käytämme VBA-koodia. Vaiheet ovat:

  • Meidän on napsautettava Visual Basic -komentoa, joka on käytettävissä Kehittäjä- välilehden Koodi- ryhmässä, tai voimme painaa Alt + F11 avataksesi Visual Basic -editorin.

  • Tulemme lisää moduulin avulla valikon Lisää .

  • Luomme aliohjelman nimeltä SplittingNames .

  • Tarvitsemme 6 muuttujaa. Yksi solujen arvojen tallentamiseen, joita käsittelemme. Toiseksi ensimmäisen tilan sijainnin tallentamiseksi merkkijonoon, kolmanneksi viimeisen tilan sijainnin merkkijonoon tallentamiseksi, neljännen viimeisen rivin sijainnin tallentamiseksi merkkijonoon, neljännen viimeisen rivin numeron tallentamiseksi, viides ja kuudes riville ja sarakkeelle, joita käytämme tulostamaan arvot viereisiin soluihin.

  • Viimeisen käytetyn rivin selvittämiseksi meidän on käytettävä seuraavaa koodia.

Tämä koodi valitsee ensin solun B1 ja sitten viimeksi käytetyn solun samasta sarakkeesta ja sitten määritämme solun rivinumeron muuttujalle 'LastRow'.

  • Nyt käsittelemään kaikkia B-sarakkeen soluja suoritamme 'for' -silmukan .

  • Tallennamme B-sarakkeen solujen arvon riviltä 2 riville 1201 yksi kerrallaan muuttujassa 's' muuttujien kanssa niiden manipuloimiseksi.

  • Meidän on asetettava muuttujan 'Sarake' arvoksi 3, koska meidän on kirjoitettava jaetut nimet C: hen (3. sarake) ja sarake eteenpäin.

  • Jos merkkijono on vain yksi sana, mikä tarkoittaa, että merkkijonossa ei ole tilaa, haluamme merkkijonon itse tuotoksena. Tätä varten määritämme ehdon käyttämällä If- ja Else-lauseita tähtimerkillä (joka merkitsee yhtä tai useampaa merkkiä) seuraavasti:

  • Jos merkkijonossa on tilaa, haluamme jakaa merkkijonon. Tekemään samoin olemme käyttäneet INSTR ja InStrRev toiminto sekä selvittää ensimmäisen tilan asentoon ja viimeinen tila asentoon vastaavasti. Se auttaa meitä löytämään merkkijonon ensimmäisen ja viimeisen sanan.

INSTR-funktio ottaa argumentin seuraavasti:

Argumentin yksityiskohdat

  • Alku: mistä asennosta aloittaa.
  • String1: Meidän on annettava merkkijono-lauseke.
  • Merkkijono2: Meidän on määritettävä etsittävä merkkijonolauseke.

Verrattuna VbCompareMethod: Vertailumenetelmän määrittäminen. Oletuksena se on binaarivertailu.

  • Meidän on käytettävä vba LEFT -toimintoa vasemman merkin poimimiseksi merkkijonosta. Olemme käyttäneet viimeiset Space-1 ' päästä vasemmalle merkkiä ennen viimeistä tilaa.

Meidän on käytettävä OIKEA- ja LEN-toimintoja poimimaan oikeat merkit merkkijonosta ensimmäisen välilyönnin jälkeen.

Makro on kirjoitettu. Nyt meidän on vain suoritettava makro F5- näppäimellä.

Koodi:

 Sub SplittingNames () Himmennä merkkijonona Hämärä Ensimmäinen tila niin pitkä himmeä LastSPace kuin pitkä himmeä Viimeinen rivi niin pitkä himmeä rivi niin pitkä himmentävä sarake kuin pitkä arkki1. Alue ("B1"). Valitse Selection.End (xlDown) .Valitse LastRow = ActiveCell. Rivi riville = 2 Viimeiseen riviin s = Taulukko1.Solut (rivi, 2). Arvo Sarake = 3 Jos s Kuten "" * * "Sitten FirstSpace = InStr (1, s," ") LastSPace = InStrRev (s," ") Sheet1.Cells (Rivi, Sarake) .Arvo = Vasen (s, LastSPace - 1) Arkki1.Cells (Rivi, Sarake + 1) .Arvo = Oikea (s, Len (s) - FirstSpace) Muu Sheet1.Cells (Rivi, Sarake) .Arvo = s Loppu, jos Seuraava loppu Ala 

Meillä on nyt tulos.


$config[zx-auto] not found$config[zx-overlay] not found