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

Tartalomjegyzék

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, a karakterlánc végétől kezdve (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 a keresést a karakterlánc elejétől kezdi, ahonnan kereshető karakterláncot keresünk.

Az INSTRREV és az INSTR mindkettő az MS Excel beépített String / Text VBA funkciója . Használhatjuk őket, miközben bármilyen makrót írunk 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 „Null” értéket ad vissza, 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 az egyezés megtalálható.

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

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:

  • Kattintson a 'Fejlesztő' fül 'Code' csoportjában elérhető 'Visual Basic' parancsra , 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ához, amelyeket manipulálni fogunk. Második az első hely pozíciójának a karakterláncban történő tárolásához, a harmadik az utolsó szó helyének a karakterláncban való 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 a szomszédos értékek kinyomtatására használunk sejtek.
  • 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.
  • Meg kell állítani az értéket a változó „oszlop” a 3-as kell írnunk az osztott nevek C (3 rd oszlop) és egy oszlop kezdve.
  • 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 és 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 az INSTR és az INSTRREV funkciókat egyaránt használtuk az első űrpozíció és az utolsó űrpozíció megismerésére . Ez segít megtalálni a karakterlánc első és utolsó szavát.

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 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 az F5 billentyűvel kell futtatnunk a makrót .

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.

érdekes cikkek...