Tartalomjegyzék
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.