Hogyan keressünk karakterláncot a VBA-val az Excelben (8 példa)

  • Ossza Meg Ezt
Hugh West

A honlap megvalósítása VBA a leghatékonyabb, leggyorsabb és legbiztonságosabb módszer bármilyen művelet futtatására az Excelben. Ebben a cikkben megmutatjuk, hogyan találhat meg bizonyos karakterláncokat egy másik adott karakterláncban a következővel VBA Excelben.

Gyakorlat sablon letöltése

Az ingyenes gyakorló Excel-sablont innen töltheti le.

VBA keresés a String.xlsm-ben

InStr funkció

A Microsoft Excel rendelkezik egy beépített funkcióval, a az InStr funkció hogy megtalálja az adott karakterláncok pozícióját egy adott karakterláncban.

Általános szintaxis:

InStr([start], string1, string2, [compare])

Tessék,

Érvek Kötelező/ fakultatív Meghatározás
indítsd el a Opcionális A keresés kiindulási pozíciója.
  • Alapértelmezés szerint a InStr függvény a karakter pozícióját nem a kezdőpozíciótól, hanem 1-től számolva számolja ki. Tehát, ha akarod, ezt üresen is hagyhatod.
string1 Kötelező A keresendő karakterlánc, elsődleges karakterlánc.
string2 Kötelező Az elsődleges karakterláncban keresendő karakterlánc.
hasonlítsa össze a Opcionális A InStr függvény alapértelmezés szerint nagy- és kisbetű-érzékeny. De ha a nagy- és kisbetű-érzékenység nélküli InStr , akkor itt átadhatja az argumentumot egy bizonyos összehasonlítás elvégzéséhez. Ez az argumentum a következő értékek lehetnek,
  • vbBinaryCompare -> bináris összehasonlítást végez, visszatérési értéke 0
  • vbTextCompare -> szöveges összehasonlítást végez, visszatérési értéke 1
  • vbDatabaseCompare -> adatbázis-összehasonlítást végez, visszatérési értéke 2

Alapértelmezés szerint, InStr elveszi vbBinaryCompare mint összehasonlító argumentum.

8 egyszerű példák adott karakterlánc pozíciójának megkeresésére adott karakterláncban a VBA használatával

Lássunk néhány egyszerű példát arra, hogyan kapjuk meg bizonyos karakterláncok pozícióját egy adott karakterláncban a következővel VBA .

1. VBA a szöveg pozíciójának keresése a karakterláncban

Az alábbiakban egy példa a InStr egy szöveg pozíciójának megkeresésére egy karakterláncban.

  • Sajtó Alt + F11 a billentyűzeten, vagy lépjen a Fejlesztő -> Visual Basic kinyitni Visual Basic szerkesztő .

  • A felugró kódablakban a menüsorban kattintson a Beszúrás -> Modul .

  • Most a kódablakban írjon egy egyszerű InStr program egy VBA aleljárás (lásd alább).
 Sub INSTR_Example() MsgBox InStr("A boldogság egy választás", "választás") End Sub 

A kódja most már futtatásra kész.

  • Sajtó F5 a billentyűzeten, vagy válassza a menüsorból a Futtatás -> Sub/UserForm futtatása . Egyszerűen csak kattints a kis Play ikon az almenüsorban a makró futtatásához.

Látni fogja, hogy a felugró üzenőmezőben megjelenik egy a pozíciót jelölő szám a szövegnek, amelyet ellenőrizni kívánt.

Magyarázat:

Az elsődleges karakterláncunk, " A boldogság egy választás " egy 21 betűs mondat (szóközökkel), és meg akartuk találni a " választás "A szövegben a " választás " az elsődleges karakterlánc 16. pozíciójából indult, ezért kaptuk a számot 16 mint a kimenetünk az üzenetdobozban.

2. VBA szöveg keresése egy adott pozícióból a karakterláncban

Most nézzük meg, hogy mi történne, ha egy bizonyos számtól szeretnénk megkapni a pozíciót.

  • Ugyanúgy, mint korábban, nyissa meg Visual Basic szerkesztő a Fejlesztő lap és Beillesztés a Modul a kódablakban.
  • A kódablakban írjon egy egyszerű InStr programot, és adja át a start argumentumban az értéket annak a pozíciónak megfelelően, ahonnan a szöveget számolni szeretné.
 Sub INSTR_Example() MsgBox InStr(17, "A boldogság egy választás", "választás") End Sub 

  • Következő, Fuss a kódot.

Látni fogja, hogy a felugró üzenőmezőben megjelenik egy a pozíciót jelölő szám a szöveg egy bizonyos pozícióból kiindulva amit ellenőrizni akartál.

Magyarázat:

Mivel már tudtuk (az 1. fázisban folytatott megbeszélésből), hogy a szöveg " választás " a következő pozícióból indult 16 , ezért beillesztettünk két " választás " az elsődleges karakterláncban, és állítsa be 17 mint az 1. paraméterünk, hogy kihagyjuk az első " választás ". Tehát, mi Fuss a fenti makró, és megmutatta a pozíciószámot 27 ami pontosan a pozíció száma a második " választás " az adott karakterláncban.

3. VBA a szöveg keresése a karakterláncban lévő InStr funkcióval Case-insensitive InStr funkcióval

A bevezetésétől kezdve a InStr funkciót már tudja, hogy alapértelmezés szerint a InStr függvény a nagy- és kisbetűkre érzékeny. Nézzük meg ezt egy példán keresztül.

Lásd a következőket VBA kódot, ahol a " Választás " egy nagy "C" a karakterláncban " A boldogság egy választás " ahol a választás egy kis "c" .

  • Fuss a kódot, és találja meg 0 mint kimenet.

Ez azért van, mert a InStr funkció kezeli nagy "C" és kis "c" Másképp. Tehát a " Választás " a karakterláncban, és nem kapott találatot, így visszaadta a 0 .

  • Hogy a InStr funkció case-insensitive , állítsa a compare argumentumot vbTextCompare (lásd alább).
 Sub INSTR_Example() MsgBox InStr(1, "A boldogság egy választás és választás", "Választás", vbTextCompare) End Sub 

  • Fuss a kódot.

Megkapja a a szöveg pozíciója a karakterláncból, függetlenül attól, hogy a szöveget a nagybetűk vagy kisbetűk .

4. VBA szöveg keresése a karakterlánc jobb oldalán lévő szövegből

Mostanáig a InStr függvény csak a karakterlánc bal oldali pozícióját adta meg. De mi van akkor, ha a karakterlánc jobb oldali pozícióját szeretnénk megtalálni.

Az InStrRev funkció keresés jobbról. InStrRev funkció nagyon hasonlóan működik, mint a InStr függvényt, és meg fogja találni a szöveg pozícióját a jobb oldal a karakterláncnak.

A különbség megértéséhez lásd a következő példákat.

  • Ha a következő kódot futtatjuk a InStr funkciót akkor,

megadja a pozíciót ( 16 ) az első szöveg " választás ".

  • De ha ugyanazt a kódot futtatjuk a InStrRev Funkció akkor,

megadja a pozíciót ( 27 ) az utolsó szöveg " választás ".

Hasonló olvasmányok:

  • FindNext a VBA használatával az Excelben (2 példa)
  • Hogyan keressük és cseréljük a VBA használatával (11 mód)
  • Pontos egyezés keresése a VBA használatával az Excelben (5 mód)

5. VBA egy karakter pozíciójának keresése a karakterláncban

Ugyanúgy megkeresheti egy adott karakter pozícióját egy karakterláncban, mint ahogyan a szöveget is megtalálta.

  • Másolja a következő kódot a VBA kódablak
 Sub Find_Character() Dim z As Long z = InStr("A boldogság egy választás", "e") MsgBox z End Sub 

  • És Fuss a makró.

Az első " e " a megadott karakterláncunkban a 7 pozíció.

6. VBA részlánc keresése egy karakterláncban

Itt megtanuljuk, hogy hogyan találjuk meg, hogy egy karakterlánc tartalmaz-e egy substring vagy nem.

Ahhoz, hogy ezt megkapjuk, le kell futtatnunk egy IF kijelentés a kódunkban.

  • Ugyanúgy, mint korábban, nyissa meg Visual Basic szerkesztő a Fejlesztő lap és Beillesztés a Modul a kódablakban.
  • A kódablakban másolja ki és illessze be a következő kódot.
 Public Sub FindSub() If InStr("A boldogság egy választás", "választás") = 0 Then MsgBox "Nem találtunk egyezést" Else MsgBox "Találatot találtunk" End If End Sub 

A kódja most már futtatásra kész.

  • Fuss a makró.

Ha a string tartalmazza a részláncot akkor kap egy találat , ellenkező esetben nem talál egyezést ad vissza. Példánkban azt akartuk megtudni, hogy az elsődleges karakterláncunk " A boldogság egy választás " tartalmazza a " választás " vagy nem. Mivel ez így van, kapunk egy Talált találat eredmény.

7. VBA karakterlánc keresése egy cellatartományban

Kereshet egy bizonyos szöveget egy cellatartományban, és egy bizonyos karakterláncot adhat vissza.

Nézzük meg a következő példát, ahol a " Az elmúlt hetekben az Egyesült Államokból érkezett dr. ", és ha van egyezés, akkor a " Doktor ".

  • Az alábbiakban a kód a fent említett eredmény eléréséhez,
 Sub Find_String_in_Range() Dim cell As Range For Each cell In Range("B5:B10") If InStr(cell.Value, "Dr.")> 0 Then cell.Offset(0, 1).Value = "Doctor" End If Next cell End Sub 

  • Fuss a kódot, és az eredmény az alábbiakban látható

  • A makrót az Ön igényeinek megfelelően módosíthatja. Például, ha a " Prof. " a karakterlánc bármely cellájában, és megkapja a " Professzor " visszatérésként, akkor egyszerűen adja át a " Prof. " helyett " Dr. ." a makró 4. sorában és " Professzor " helyett " Doktor " a makró 5. sorában, és ennek megfelelően határozzuk meg a cellatartomány számát.

8. VBA karakterlánc keresése egy cellában

Ön is egy bizonyos szöveg keresése a string egyetlen cellájában és egy bizonyos karakterláncot ad vissza.

  • Másolja ki az alábbi kódot, és illessze be a kódablakba.
 Sub Find_String_in_Cell() If InStr(Range("B5").Value, "Dr.")> 0 Then Range("C5").Value = "Doctor" End If End Sub 

Meg fogja keresni a " Az elmúlt hetekben az Egyesült Államokból érkezett dr. " in B5 sejt és ha megtalálja az egyezést, akkor visszaadja a " Doktor " in C5 sejt .

  • A makrót az Ön igényeinek megfelelően módosíthatja. Például, ha a " Prof. " a karakterlánc bármely cellájában, és megkapja a " Professzor " visszatérésként, akkor egyszerűen adja át a " Prof. " helyett " Dr. ." a makró 2. sorában és " Professzor " helyett " Doktor " a makró 3. sorában, és ennek megfelelően határozzuk meg a cellahivatkozási számot.

Következtetés

Ez a cikk megmutatta, hogyan találhat meg bizonyos szövegeket az Excel stringben az Excel segítségével. VBA makró. Remélem, hogy ez a cikk nagyon hasznos volt az Ön számára. Nyugodtan tegye fel kérdéseit a témával kapcsolatban.

Hugh West nagy tapasztalattal rendelkező Excel-oktató és elemző, több mint 10 éves tapasztalattal az iparágban. Számvitel és pénzügy szakos alapdiplomát, valamint üzleti adminisztrációból mesterképzést szerzett. Hugh szenvedélye a tanítás, és egyedülálló tanítási megközelítést dolgozott ki, amely könnyen követhető és érthető. Az Excelben szerzett szakértői tudása világszerte több ezer diáknak és szakembernek segített abban, hogy készségeiket és karrierjüket kiválóan teljesítsék. Hugh blogján keresztül megosztja tudását a világgal, ingyenes Excel-oktatóanyagokat és online képzéseket kínálva, hogy segítse az egyéneket és a vállalkozásokat teljes potenciáljuk kibontakoztatásában.