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
- 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 .
- 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” .
- Ha a karakterlánc-egyezés nulla hosszú, akkor a függvény visszatér a kezdéshez .
- 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 sablontTegyü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.