Hogyan használjuk az InStr funkciót a VBA-ban (3 egyszerű példa)

  • Ossza Meg Ezt
Hugh West

Az Excel VBA kódokkal való munka során találkozunk néhány beépített függvénnyel, amelyek egy összetett feladatot egy kis egysoros kóddá alakítanak át. InStr egy olyan Excel VBA-ban elérhető függvény, amely egy adott karakterláncot keres egy másik adott karakterláncon belül egy adott pozíciótól kezdve. Ma megmutatom, hogyan használhatja a InStr függvényt a VBA-ban, hogy egy adott karakterláncot keressen egy másik adott karakterláncon belül.

Gyakorlati munkafüzet letöltése

InStr Function.xlsm

Bevezetés a VBA InStr funkció

  • Összefoglaló

Egy adott karakterláncban egy adott pozíciótól kezdve keres egy adott karakterláncot. Ha talál egyezést, akkor visszaadja az adott karakterlánc azon pozícióját, ahonnan a találat kezdődött.

  • Szintaxis

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

  • Érvek
ARGUMENTUM KÖVETELMÉNY LEÍRÁS

[start] Opcionális Az a pozíció, ahonnan a keresés elindul. Az alapértelmezett érték 1.
string1 Kötelező A karakterlánc, amelyen belül egy adott karakterláncot keres.
string2 Kötelező A karakterlánc, amelyet egy adott karakterláncon belül keres.
[hasonlítsd össze] Opcionális Az {-1,0,1,2} közötti numerikus érték, amely meghatározza az összehasonlítás típusát. Az alapértelmezett érték -1 (vbUseCompareOption). Ha az Option Compare utasítás nincs megadva, akkor bináris összehasonlítást hajt végre.

Megjegyzés:

  • Bár a [start] érv és a [hasonlítsd össze] argumentum opcionális, szükség van a [start] argumentumot, ha megadod a [hasonlítsd össze] Ellenkező esetben hibaüzenetet kap.
  • Ha az egyik vagy mindkét [start] érv és a [hasonlítsd össze] érv Null , hibaüzenetet fog kapni.
  • A négy megadott érték a [hasonlítsd össze] argument négy különböző típusú összehasonlítást végez. Ezek az alábbiakban szerepelnek:
ÉRTÉK ÁLLANDÓ LEÍRÁS

-1 vbUseCompareOption Elvégzi az Option Compare utasításban megadott összehasonlítást.
0 vbBinaryCompare Bináris összehasonlítást végez.
1 vbTextCompare Szöveges összehasonlítást végez.
2 vbDatabaseCompare Összehasonlítást végez az adatbázis alapján.
  • Opció összehasonlítása utasítás a VBA-fő kód kezdete előtt megadott utasítás, amely meghatározza, hogy a kód szükség esetén bináris összehasonlítást vagy szöveges összehasonlítást keressen.

Opció Összehasonlítás szövege

    • Egyszerűbben fogalmazva , Bináris összehasonlítás nagy- és kisbetű-érzékeny összehasonlítást jelent.
    • Egyszerűbben fogalmazva , Szöveg összehasonlítás a nagy- és kisbetű-független összehasonlítást jelenti.
  • Visszatérési érték
    • Visszaadja a pozíciót a string1 amelyből a string2 elkezdődött.
    • Abban az esetben, ha string2 nem található a string1 kezdve a indítsd el a pozíció, 0-t ad vissza.
    • Ha a string1 nulla hosszúságú, 0-t ad vissza.
    • Ha a string2 nulla hosszúságú, akkor az argumentumot a indítsd el a .
    • És végül, ha bármelyik string1 vagy string2 a Null , hibaüzenetet ad vissza.

3 egyszerű példa a VBA InStr funkció használatára

Ebben a szakaszban három egyszerű példát fogunk látni a VBA alkalmazására. InStr függvényt az Excelben. Lássuk az első példát a InStr funkciót a VBA kódokban.

1. Annak eldöntése, hogy egy cím e-mail cím-e vagy sem a VBA InStr funkció használatával

Itt egy olyan adathalmazt vettünk, amely néhány ügyfél elérhetőségi címét tartalmazza. A célunk az lesz, hogy azonosítsuk, hogy a címek e-mail címek-e vagy sem.

Most egy VBA kódot fogunk kifejleszteni a InStr funkcióval azonosítani, hogy az e-mail cím-e. Ehhez kövesse az alábbi lépéseket.

Lépések:

  • Kezdetben menjen a Fejlesztő lapot, és válassza a Visual Basic ( Vagy nyomja meg a Alt+F11) a VBA ablak.

  • Aztán, a VBA ablakban, menjen a Beszúrás> modul .

  • Ezután a modulban illessze be a következő kódot:
 Function DECISION(string1 As String) Dim Position As Integer Position = InStr(1, string1, "@", 0) If Position = 0 Then DECISION = "Not Email" Else DECISION = "Email" End If End If End Function 

  • Továbbá létrehoztunk egy függvényt, melynek neve DÖNTÉS Eldönti, hogy egy cím e-mail cím-e. Alkalmazzuk a függvényt a rendelkezésünkre álló adathalmazra.
  • A cellán C5 , írja le a következő képletet, majd töltse ki automatikusan a többi cellát a következővel Töltse ki a fogantyút .
=DECISION(B5)

  • Amint láthatjuk, minden címet azonosítottunk, függetlenül attól, hogy az egy e-mail cím-e vagy sem.

🎓 Hogyan működik a kód?

  • Function DECISION(string1 As String)

Először is, ez létrehoz egy függvényt DÖNTÉS egy string argumentummal, melynek neve string1 .

  • Dim Position As Integer

Deklarál egy egész szám változót, amelynek neve Pozíció .

  • Position = InStr(1, string1, "@", 0)

Ez hozzárendeli a Pozíció változó, mint a InStr függvényt a következő argumentumokkal 1, string1, "@" és 0 Röviden, ez hozzárendeli azt a pozíciót a címben, ahol van egy "@" .

  • If Position = 0 Then DECISION = "Nem e-mail"

Hozzárendeli a kimenetét a DÖNTÉS funkciója, mint "Nem e-mail" , ha a Pozíció változó 0 , vagyis nem volt "@" a címben.

(Emlékezzünk vissza, ha a megadott karakterláncon belül nem találunk bármilyen karakterláncot, akkor a InStr funkció visszatér 0 ).

  • Else DECISION = "Email"

Ez hozzárendeli a kimenetét a DÖNTÉS funkciója, mint "Email" ha lenne egy "@" Így azok a címek, ahol a címben a "@" a következő kategóriákba sorolhatók E-mail , a többi pedig a következő kategóriába tartozik "Nem e-mail" .

Hasonló olvasmányok

  • A VBA UCASE funkció használata az Excelben (4 példa)
  • Használja az MsgBox funkciót az Excel VBA-ban (teljes útmutató)
  • A VBA SPLIT funkció használata az Excelben (5 példa)
  • Az LCase funkció használata a VBA-ban az Excelben (4 példával)
  • A Fix funkció használata az Excel VBA-ban (4 példa)

2. A VBA InStr függvény felhasználása a következőkhöz Néhány e-mail cím kiterjesztésének kivonása

Itt van egy lista néhány ügyfél e-mail címéről. Ezúttal az e-mail cím kiterjesztését fogjuk kinyerni, mint például, hogy van-e gmail.com vagy yahoo.com .

Ehhez kövesse az alábbi lépéseket.

Lépések:

  • Kezdetnek, az előző módszerhez hasonlóan, nyisson egy új VBA modult, és illessze be a következő kódot az ablakba.
 Function EXTENSION(Email As String) Dim Position As Integer Position = InStr(1, Email, "@", 0) EXTENSION = Right(Email, (Len(Email) - Position)) End Function 

  • Ezen kívül létrehoztunk egy függvényt, melynek neve EXTENSION Kivonja bármely e-mail cím kiterjesztését.
  • Továbbá, alkalmazzuk ezt a függvényt a rendelkezésünkre álló adathalmazra. Először is, írjuk be a következő képletet a cellába C5 majd kattintson duplán a Töltse ki a fogantyút .
=EXTENSION(B5)

  • Végül láthatjuk, hogy sikeresen kinyertük az összes e-mail kiterjesztését.

🎓 Hogyan működik a kód?

  • Function EXTENSION(Email As String)

Ez egy új függvényt hoz létre EXTENSION , egy string argumentummal, melynek neve E-mail .

  • Dim Position As Integer

Ez a rész egy egész szám változót deklarál, melynek neve Pozíció.

  • Position = InStr(1, Email, "@", 0)

Ez hozzárendeli a Pozíció változó, mint a InStr függvényt a következő argumentumokkal 1, Email, "@" és 0 Röviden, ez hozzárendeli a pozíciót a E-mail ahol van egy "@" .

  • EXTENSION = Right(Email, (Len(Email) - Position))

Ez a rész hozzárendeli a kimenetét a EXTENSION funkciót a szimbólum utáni karakterek "@" Ez a szükséges meghosszabbítása a E-mail .

3. A kereszt- vagy vezetéknév kivonása a névből a VBA InStr funkció használatával

Végül egy egyedülállóan más feladatot fogunk végrehajtani. Ezúttal egy vállalat néhány alkalmazottjának a nevével rendelkezünk. És megpróbálunk egy olyan függvényt létrehozni, amely vagy az alkalmazottak keresztnevét, vagy a vezetéknevét nyeri ki.

Ehhez kövesse az alábbi lépéseket.

Lépések:

  • Először is, hasonlóan a 1. módszer , illessze be az alábbi kódot egy új modulba a VBA ablakban.
 Function SHORTNAME(Name As String, First_or_Last As Integer) Dim Break As Integer Break = InStr(1, Name, " ", 0) If First_or_Last = -1 Then SHORTNAME = Left(Name, Break - 1) Else SHORTNAME = Right(Name, Len(Name) - Break) End If End Function 

  • Itt létrehoztunk egy függvényt, melynek neve RÖVIDNÉV amely vagy a keresztnevet, vagy a vezetéknevet veszi ki egy névből. Alkalmazzuk ezt a képletet az adathalmazunkra.
  • Először is, az első név kivonásához írja le az alábbi képletet a cellába C5 .
=SHORTNAME(B5,-1)

  • Végül, a vezetéknevek kinyeréséhez a következő képletet írjuk le a következő nyelven D5 :
=SHORTNAME(B5,1)

  • Ezután, ha a többi cellát automatikusan kitöltjük a Töltse ki a kezelőt , látni fogjuk a kívánt eredményt.

🎓 Hogyan működik a kód?

  • Function SHORTNAME(Name As String, First_or_Last As Integer)

Létrehoz egy új függvényt RÖVIDNÉV egy String argumentummal, melynek neve Név és egy Integer Argument nevű Első_vagy_utolsó .

  • Dim Break As Integer

Ez a rész egy új egész szám változót deklarál, melynek neve Szünet .

  • Break = InStr(1, Name, " ", 0)

Hozzárendeli az értéket a Szünet változó, mint a InStr függvényt a következő argumentumokkal 1, név, " " és 0 Röviden, ez hozzárendeli a pozíciót a Név ahol van egy szóköz (" ").

  • If First_or_Last = -1 Then SHORTNAME = Left(Name, Break - 1)

Ez a sor hozzárendeli a RÖVIDNÉV funkciót, mint a karakterek a űr , ha a Első_vagy_utolsó argumentum -1. Ez az első név.

  • Rövidnév = Jobb(Név, Len(Név) - Törés)

Ez a rész hozzárendeli a kimenetét a RÖVIDNÉV funkciót, mint a karakterek a űr , ha a Első_vagy_utolsó argumentum 1. Ez a vezetéknév.

Következtetés

Ily módon VBA kódokat írhatsz a InStr függvényt, amely kideríti egy adott karakterlánc pozícióját egy másik adott karakterláncon belül, majd létrehozhatod a saját függvényeidet a legkülönbözőbb felhasználási célokra. Továbbá, ha bármilyen kérdésed van, nyugodtan kérdezz tőlünk.

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.