VBA InStrRev - Kuidas kasutada Exceli VBA InStrRev funktsiooni?

Lang L: none (table-of-contents)

Exceli VBA INSTRREV

Funktsioon VBA INSTRREV , mis tähistab lühendit „String Reverse” , tagastab otsingu stringi (alamstringi) esimese esinemise positsiooni teises stringis, alustades selle stringi lõpust (paremalt vasakule), mida otsime otsitav string.

Funktsioon INSTRREV alustab otsitava stringi otsimist selle stringi lõpust, mille peame välja selgitama, kuid loeb positsiooni algusest peale. On veel üks funktsioon INSTR VBA (tähistab 'stringis' ), mis otsib ka stringi teises stringis ja tagastab positsiooni, kuid see funktsioon alustab otsimist selle stringi algusest, kust otsitavat stringi otsime.

INSTRREV ja INSTR , mõlemad on MS Exceli sisseehitatud string / tekst VBA funktsioon . Saame neid kasutada Microsoft Visual Basic Editoris mis tahes makro kirjutamisel.

Süntaks

Nagu näeme ülaltoodud pildil, on 2 kohustuslikku ja 2 valikulist argumenti.

  • StringCheck As String: See on vajalik argument. Peame andma otsitava stringi avaldise.
  • StringMatch as String: See argument on samuti nõutav. Peame määrama otsitava stringi avaldise.
  • Start As Long = -1: See on valikuline argument. Täpsustame arvulise avaldise. Vaikimisi kulub selleks -1, mis tähendab, et otsing algab märgi viimasest positsioonist. Kui määrame positiivse väärtuse, näiteks 80, siis hakkab see otsima stringi lõpust nendes 80 vasakpoolses tähemärgis.
  • Võrdle kui VbCompareMethod = vbBinaryCompare As Long: See argument on valikuline.

Selle argumendi jaoks saame määrata järgmised väärtused.

Tagastusväärtused

  1. Funktsioon INSTRREV tagastab 0, kui stringi kontroll on nullpikk või stringi vastet ei leita või argument „start” > stringi vaste pikkus .
  2. See funktsioon tagastab 'Null', kui stringi kontroll või stringivastus on 'Null'.
  3. Kui stringivastus on nullpikk, naaseb funktsioon uuesti .
  4. Kui string vaste leitakse jooksul string kontroll , siis tagastab asendisse, milles leitakse vastav.

Kuidas kasutada funktsiooni VBA INSTRREV?

Oletame, et meil on andmeid filmide nimede ja nende režissööride kohta. Tahame lavastajate nimed jagada.

Andmeid on meil 1201 reas. Kui teeme selle ülesande käsitsi, võtab see palju aega.

Selleks kasutame VBA koodi. Sammud on:

  • Peame klõpsama vahekaardi Arendaja rühmas Kood saadaval olevat käsku Visual Basic või visuaalse põhiredaktori avamiseks vajutage klahve Alt + F11 .
  • Me sisestada moodul kasutades "Insert" menüüs .
  • Loome alamprogrammi nimega "SplittingNames".
  • Lahtrite väärtuste salvestamiseks vajame 6 muutujat - ühte, mida me manipuleerime. Teiseks esimese tühiku positsiooni salvestamiseks stringis, kolmandaks viimase tühiku positsiooni salvestamiseks stringis, neljandaks viimase rea numbri salvestamiseks, viiendaks ja kuuendaks rea ja veeru jaoks, mida kasutame kõrvalolevate väärtuste printimiseks rakke.
  • Lehe viimati kasutatud rea teada saamiseks peame kasutama järgmist koodi.

Selle koodiga valitakse kõigepealt lahter B1 ja seejärel samast veerust viimati kasutatud lahter ning seejärel määrame muutujale „LastRow” lahtri rea numbri.

  • Nüüd kõigi veerus B olevate lahtritega manipuleerimiseks käivitame tsükli „for” .
  • B-veeru lahtrite väärtus reast 2 kuni rea 1201 salvestatakse ükshaaval muutuja 's' s nende manipuleerimiseks.
  • Peame määrama muutuja 'Column' väärtuseks 3, kuna jagunimed tuleb kirjutada C- sse (kolmas veerg) ja veerg edasi.
  • Kui string on ainult üks sõna, mis tähendab, et stringis pole tühikut, siis soovime väljundina stringi ennast. Selleks täpsustame tingimuse, kasutades tärniga (tähistades üht või mitut tähemärki) tähte "If and Else lause" järgmiselt:
  • Kui stringis on ruumi, siis tahame stringi jagada. Selleks kasutasime funktsioone INSTR ja INSTRREV nii esimese kui ka viimase ruumi positsiooni väljaselgitamiseks . See aitab meil leida stringi esimene ja viimane sõna.

Funktsioon INSTR võtab järgmise argumendi:

Argumendi üksikasjad

  • Algus: millisest positsioonist alustada.
  • String1: peame andma otsitava stringi avaldise.
  • String2: peame määrama otsitava stringi avaldise.

Võrreldes VbCompareMethodiga: võrdlusmeetodi määramine. Vaikimisi on see binaarne võrdlus.

  • Stringist vasakpoolsete märkide väljavõtmiseks peame kasutama funktsiooni VBA LEFT . Vasakpoolsete tähemärkide saamiseks enne viimast tühikut oleme kasutanud sõna „Viimane tühik-1” .

Õigete tähemärkide eemaldamiseks stringist peame pärast esimest tühikut kasutama funktsioone RIGHT ja LEN .

Makro on kirjutatud. Nüüd peame lihtsalt käivitama makro, kasutades klahvi F5 .

Kood:

Sub SplittingNames () Dim s stringina Dim FirstSpace As Long Dim LastSPace As Long Dim LastRow As Long Dim Row As Long Dim Column as Long Sheet1.Range ("B1"). Valige Selection.End (xlDown). Valige LastRow = ActiveCell. Rida reale = 2 kuni LastRow s = leht1.Rakud (rida, 2). Veeru väärtus = 3 Kui s Like "* *" Siis FirstSpace = InStr (1, s, "") LastSPace = InStrRev (s, "") Sheet1.Cells (rida, veerg) .Value = vasak (s, LastSPace - 1) leht1Cells (rida, veerg + 1) .Value = parem (s, Len (s) - FirstSpace) muu leht1.Cells (rida, Veerg). Väärtus = s Lõpp, kui järgmine lõpp alam

Nüüd on meil tulemus olemas.

Huvitavad Artiklid...