VBA InStrRev | Hogyan kell használni az Excel VBA InStrRev függvényt?

Excel VBA INSTRREV

A VBA INSTRREV függvény az „In String Reverse” rövidítéssel visszaadja a keresési karakterlánc (sztring) első előfordulásának helyzetét egy másik karakterláncban, kezdve a karakterlánc végétől (jobbról balra), ahonnan keresünk kereshető karakterlánc.

Az INSTRREV függvény elkezdi keresni a kereshető karakterláncot a karakterlánc végétől, amelyet meg kell találnunk, de az elejétől számolja a pozíciót. Van még egy INSTR vba függvény ( rövidítése 'In String' ), amely szintén keres egy karakterláncot egy másik karakterláncban, és visszaadja a pozíciót, de ez a függvény megkezdi a keresést a karakterlánc elejétől, ahonnan kereshető karakterláncot keresünk.

Az INSTRREV és az INSTR egyaránt az MS Excel beépített String / Text VBA funkciója . Használhatjuk őket bármilyen makró írásakor a Microsoft Visual Basic Editorba.

Szintaxis

Amint a fenti képen láthatjuk, 2 kötelező és 2 választható argumentum létezik.

  • StringCheck As String: Ez a szükséges argumentum. Meg kell adnunk a keresett karakterlánc kifejezést.
  • StringMatch As String: Erre az argumentumra is szükség van. Meg kell adnunk a keresett karakterlánc kifejezést.
  • Start As Long = -1: Ez egy választható argumentum. Megadjuk a numerikus kifejezést. Alapértelmezés szerint -1, ami azt jelenti, hogy a keresés az utolsó karakterpozíciónál kezdődik. Ha bármilyen pozitív értéket megadunk, például 80, akkor a karakterlánc végétől kezdi keresni a bal oldali 80 karaktert.
  • Összehasonlítás As VbCompareMethod = vbBinaryCompare As Long: Ez az argumentum nem kötelező.

Ehhez az argumentumhoz a következő értékeket adhatjuk meg.

Visszatérési értékek

  1. Az INSTRREV függvény 0 értéket ad vissza, ha a karakterlánc-ellenőrzés  nulla hosszúságú vagy a karakterlánc-egyezés  nem található, vagy a „start” argumentum> a karakterlánc-egyezés hossza .
  2. Ez a függvény visszaadja a „Null” értéket, ha a karakterlánc-ellenőrzés  vagy a string-egyezés  értéke „Null” .
  3. Ha a karakterlánc-egyezés nulla hosszú, akkor a függvény visszatér a kezdéshez .
  4. Ha egy karakterlánc-egyezést talál egy karakterlánc-ellenőrzésen belül , akkor a függvény visszaadja azt a pozíciót, ahol a találat megtalálható.

Hogyan kell használni a VBA INSTRREV funkciót?

Ezt a VBA INSTRREV Excel sablont innen töltheti le - VBA INSTRREV Excel sablont

Tegyük fel, hogy van adatunk a filmek nevéről és rendezőiről. Rendezőneveket szeretnénk szétválasztani.

1201 sorban vannak adataink. Ha ezt a feladatot manuálisan végezzük, akkor sok időbe telik.

Ehhez a VBA kódot fogjuk használni. Lépések:

  • Kattintsunk a 'Visual Basic' parancsra, amely elérhető a 'Fejlesztő' fül 'Code' csoportjában, vagy megnyomhatjuk az Alt + F11 billentyűkombinációt a visual basic szerkesztő megnyitásához.

  • A 'Beszúrás' menü segítségével beillesztünk egy modult .

  • Létrehozunk egy „SplittingNames” nevű szubrutint .

  • 6 változóra van szükségünk. Az egyik a cellák értékeinek tárolására, amelyeket manipulálni fogunk. Második az első hely pozíciójának a karakterláncban történő tárolásához, harmadik az utolsó szó helyének a karakterláncban történő tárolásához, negyedik az utolsó sor számának tárolásához, ötödik és hatodik a sor és az oszlop számára, amelyet az értékek kinyomtatására használunk a szomszédos cellákban.

  • A lap utolsó használt sorának megismeréséhez a következő kódot kell használnunk.

Ez a kód először kiválasztja a B1 cellát, majd kiválasztja az utoljára használt cellát ugyanabban az oszlopban, majd hozzárendeljük a cella sorszámát a 'LastRow' változóhoz.

  • A B oszlop összes cellájának manipulálásához futtatunk egy „for” ciklust .

  • A B oszlop celláinak értékét a 2. és az 1201. sor között egyenként tároljuk a 's' változóban, hogy manipuláljuk őket.

  • Az 'Oszlop' változó értékét 3-ra kell állítanunk, mivel a felosztott neveket C-be (3. oszlop) és egy oszlopot kell felírnunk.

  • Ha a karakterlánc csak egy szó, ami azt jelenti, hogy nincs hely a karakterláncban, akkor magát a karakterláncot akarjuk kimenetként használni. Ehhez megadjuk a feltételt az 'If and Else utasítás' használatával , csillag jellel (egy vagy több karaktert jelölve) az alábbiak szerint:

  • Ha van hely a karakterláncban, akkor fel akarjuk osztani a karakterláncot. Ehhez ugyanazt az INSTR és INSTRREV függvényt használtuk , hogy megtudjuk az első és az utolsó tér helyzetét. Ez segít megtalálni az első szót és az utolsó szót a karakterláncban.

Az INSTR függvény az alábbi argumentumot veszi fel:

Érv részletei

  • Kezdés: Melyik pozícióból induljon.
  • String1: Meg kell adnunk a keresett karakterlánc kifejezést.
  • String2: Meg kell adnunk a keresett karakterlánc kifejezést.

Összehasonlítva mint VbCompareMethod: Összehasonlító módszer megadása. Alapértelmezés szerint bináris összehasonlítás.

  • A vba LEFT függvényt kell használnunk a bal karakterek kibontásához a karakterláncból. Az „Utolsó szóköz-1” -et használtuk a bal karakterek lekérésére az utolsó szóköz előtt.

A RIGHT és LEN függvényeket kell használnunk ahhoz, hogy az első szóköz után kiválasszuk a megfelelő karaktereket a karakterláncból.

Makró meg van írva. Most csak a makrót kell futtatnunk az F5 billentyűvel.

Kód:

 Sub SplittingNames () Dim s As String Dim FirstSpace Long Dim LastSPace As Long Dim LastRow As Long Dim Row As Long Dim Column As Long Sheet1.Range ("B1"). Válassza a Selection.End (xlDown) elemet. Válassza a LastRow = ActiveCell elemet. Sor a sorhoz = 2 a LastRow-hoz s = Sheet1.Cells (2. sor). Érték oszlop = 3 If s Like "" * * "Akkor FirstSpace = InStr (1, s," ") LastSPace = InStrRev (s," ") Sheet1.Cells (Row, Column) .Value = Bal (s, LastSPace - 1) Sheet1.Cells (Row, Column + 1). Value = Right (s, Len (s) - FirstSpace) Másik Sheet1.Cells (Row, Oszlop) .Value = s Vége, ha Következő vége Al 

Most van eredménye.