Sisukord
Exceli VBA koodidega töötades puutume kokku mõne sisseehitatud funktsiooniga, mis muudavad keerulise ülesande väikeseks ühe rea koodiks. InStr on selline Excel VBA-s saadaval olev funktsioon, mis otsib kindlat stringi teise antud stringi sees alates antud positsioonist. Täna näitan, kuidas saab kasutada funktsiooni InStr funktsioon VBAs, et otsida konkreetset stringi teise antud stringi seest.
Lae alla praktiline töövihik
InStr funktsioon.xlsm
Sissejuhatus VBA InStr funktsioon
- Kokkuvõte
Otsib antud stringist kindlat stringi, alustades antud positsioonist. Kui leiab kokkulangevuse, tagastab positsiooni antud stringis, kust kokkulangevus algas.
- Süntaks
InStr([start],string1,string2,[compare])
- Argumendid
ARGUMENT | NÕUE | KIRJELDUS |
---|---|---|
[start] | Valikuline | Positsioon, millest otsingut alustatakse. Vaikimisi on 1. |
string1 | Nõutav | String, mille piires ta otsib antud stringi. |
string2 | Nõutav | String, mida otsitakse antud stringi sees. |
[Võrdle] | Valikuline | Numbriline väärtus vahemikus {-1,0,1,2}, mis määrab võrdluse tüübi. Vaikimisi on -1 (vbUseCompareOption). Kui Option Compare avaldist ei ole määratud, tehakse Binary Comparison. |
Märkus:
- Kuigi [start] argument ja [Võrdle] argument on vabatahtlik, teil on vaja [start] argumenti, kui te määrate [Võrdle] Vastasel juhul tekitab see vea.
- Kui üks või mõlemad [start] argument ja [Võrdle] argument on Null , ilmneb viga.
- Neli kindlaksmääratud väärtust, mis on esitatud [Võrdle] argumendiga teostatakse nelja erinevat tüüpi võrdlust. Need on nimetatud allpool:
VÄÄRTUS | CONSTANT | KIRJELDUS |
---|---|---|
-1 | vbUseCompareOption | Teostab võrdluse, mis on määratud avalduses Option Compare. |
0 | vbBinaryCompare | Teostab binaarse võrdluse. |
1 | vbTextCompare | Teostab tekstivõrdluse. |
2 | vbDatabaseCompare | Teeb võrdluse teie andmebaasi põhjal. |
- Valik Võrdle avaldis on avaldis, mis esitatakse enne VBA põhikoodi algust. See määrab, kas kood otsib vajaduse korral binaarset võrdlust või tekstivõrdlust.
Valik Võrdle tekst
- Lihtsamalt öeldes , Binaarne võrdlus tähendab suur- ja väiketähtedega võrdlust.
- Lihtsamalt öeldes , Teksti võrdlus tähendab suur- ja väiketähtedeta võrdlust.
- Tagastatav väärtus
- Tagastab positsiooni string1 millest lähtuvalt string2 algas.
- Juhul kui string2 ei leidu string1 alustades start positsioon, tagastab 0.
- Kui string1 on nullpikkune, tagastab 0.
- Kui string2 on nullpikkusega, tagastab argumendi start .
- Ja lõpuks, kui mõni string1 või string2 on Null , tagastab vea.
3 lihtsat näidet VBA InStr-funktsiooni kasutamiseks
Selles jaotises näeme kolme lihtsat näidet VBA rakendamise kohta. InStr funktsiooni Excelis. Vaatame esimest näidet InStr funktsioon VBA koodides.
1. Otsustamine, kas aadress on e-posti aadress või mitte kasutades VBA InStr funktsiooni
Siinkohal oleme võtnud andmekogumi, mis sisaldab mõningaid klientide kontaktaadresse. Meie eesmärk on tuvastada, kas aadressid on e-posti aadressid või mitte.
Nüüd arendame VBA koodi kasutades InStr funktsiooni, et tuvastada, kas tegemist on e-posti aadressiga või mitte. Selleks järgige alljärgnevaid samme.
Sammud:
- Alguses mine Arendaja vahekaart ja valige Visual Basic ( Või vajutage Alt+F11) avada VBA aken.
- Siis, kohta VBA aknas, mine Insert> moodul .
- Pärast seda kleepige moodulisse järgmine kood:
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
- Lisaks oleme loonud funktsiooni nimega OTSUS . See otsustab, kas aadress on e-posti aadress või mitte. Rakendame funktsiooni olemasolevale andmekogumile.
- Mobiilikambrisse C5 , kirjutage järgmine valem ja seejärel täitke ülejäänud lahtrid automaatselt, kasutades järgmist valemit Täitmise käepide .
=DECISION(B5)
- Nagu näeme, oleme tuvastanud iga aadressi, olenemata sellest, kas tegemist on e-posti aadressiga või mitte.
🎓 Kuidas kood töötab?
- Funktsioon DECISION(string1 As String)
Esiteks, see loob funktsiooni nimega OTSUS string-argumendiga nimega string1 .
- Dim Position As Integer
Selles deklareeritakse täisarvuline muutuja nimega Positsioon .
- Position = InStr(1, string1, "@", 0)
See määrab väärtuse Positsioon muutuja väljundina InStr funktsioon argumentidega 1, string1, "@" ja 0 Lühidalt öeldes määrab see aadressi koha, kus on olemas "@" .
- If Position = 0 Then DECISION = "Not Email"
See määrab väljundi OTSUS funktsioon nagu "Mitte e-post" , kui Positsioon muutuja on 0 , see tähendab, et ei olnud "@" aadressil.
(Tuletame meelde, et kui mingi string ei leia antud stringi sees, siis on InStr funktsioon tagastab 0 ).
- Else DECISION = "E-post"
Sellega määratakse väljund OTSUS funktsioon nagu "E-post" kui oleks olemas "@" aadressis. Seega aadressid, kus on olemas "@" liigitatakse järgmistesse kategooriatesse E-post , ja ülejäänud on liigitatud järgmistesse kategooriatesse "Mitte e-post" .
Sarnased lugemised
- Kuidas kasutada VBA UCASE funktsiooni Excelis (4 näidet)
- Kasutage MsgBox funktsiooni Excel VBA-s (täielik juhend)
- Kuidas kasutada VBA SPLIT-funktsiooni Excelis (5 näidet)
- Kasutage LCase funktsiooni VBAs Excelis (4 näite)
- Kuidas kasutada Fix funktsiooni Excel VBA-s (4 näidet)
2. Kasutades VBA InStr funktsiooni jaoks Mõne e-posti aadressi laienduse väljavõtmine
Siin on meil nimekiri mõnede klientide e-posti aadressidest. Seekord eraldame e-posti aadressi laienduse, näiteks kas neil on gmail.com või yahoo.com .
Selleks järgige alljärgnevaid samme.
Sammud:
- Alustuseks avage sarnaselt eelmisele meetodile uus VBA moodul ja kleebige aknasse järgmine kood.
Function EXTENSION(Email As String) Dim Position As Integer Position = InStr(1, Email, "@", 0) EXTENSION = Right(Email, (Len(Email) - Position)) End Function
- Lisaks oleme loonud funktsiooni nimega PIKENDUS . See võtab välja mis tahes e-posti aadressi laienduse.
- Lisaks sellele rakendame seda funktsiooni olemasolevale andmekogumile. Esmalt sisestame selle valemi lahtrisse C5 ja seejärel topeltklõpsake Täitmise käepide .
=EXTENSION(B5)
- Lõpuks näeme, et oleme edukalt ekstraheerinud kõigi e-kirjade laiendused.
🎓 Kuidas kood töötab?
- Funktsioon EXTENSION(Email As String)
See loob uue funktsiooni nimega PIKENDUS , koos string-argumendiga nimega E-post .
- Dim Position As Integer
Selles osas deklareeritakse täisarvuline muutuja nimega Positsioon.
- Position = InStr(1, Email, "@", 0)
See määrab väärtuse Positsioon muutuja väljundina InStr funktsioon argumentidega 1, E-post, "@" ja 0 Lühidalt öeldes määrab see positsiooni E-post kus on olemas "@" .
- EXTENSION = Right(Email, (Len(Email) - Position))
See osa määrab väljundit PIKENDUS funktsioon kui sümbolile järgnevad tähemärgid "@" See on nõutav pikendus E-post .
3. Ees- või perekonnanime väljavõtmine nimest kasutades VBA InStr funktsiooni
Lõpuks täidame üheselt teistsugust ülesannet. Seekord on meil olemas mõne ettevõtte töötajate nimed. Ja me püüame luua funktsiooni, mis võtaks välja kas töötajate eesnime või perekonnanime.
Selleks järgige alljärgnevaid samme.
Sammud:
- Esiteks, sarnaselt meetod 1 , kleepige alljärgnev kood VBA akna uues moodulis.
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
- Siin oleme loonud funktsiooni nimega LÜHINIMI mis eraldab nimest kas eesnime või perekonnanime. Rakendame seda valemit meie andmekogumi suhtes.
- Esmalt kirjutage esimese nime väljavõtmiseks lahtrisse järgmine valem C5 .
=SHORTNAME(B5,-1)
- Lõpuks, et eraldada perekonnanimed, kirjutame järgmise valemi sisse D5 :
=SHORTNAME(B5,1)
- Pärast seda, kui me automaatselt täidame ülejäänud lahtrid koos Täitmise käsitseja , näeme soovitud tulemust.
🎓 Kuidas kood töötab?
- Function SHORTNAME(Name As String, First_or_Last As Integer)
See loob uue funktsiooni nimega LÜHINIMI ühe String-argumendiga nimega Nimi ja üks täisarvuline argument nimega First_or_Last .
- Dim Break As Integer
See osa deklareerib uue täisarvulise muutuja nimega Break .
- Break = InStr(1, nimi, " ", 0)
See määrab väärtuse Break muutuja väljundina InStr funktsioon argumentidega 1, Nimi, " " ja 0 Lühidalt öeldes määrab see positsiooni Nimi kus on olemas tühik (" ").
- Kui First_or_Last = -1 Siis SHORTNAME = Left(Name, Break - 1)
See rida määrab väljundi LÜHINIMI funktsioon kui tähemärgid enne kosmos , kui First_or_Last argument on -1. See on esimene nimi.
- SHORTNAME = Right(Nimi, Len(Nimi) - Break)
See osa määrab väljundit LÜHINIMI funktsioon, kuna tähemärgid pärast kosmos , kui First_or_Last argument on 1. See on perekonnanimi.
Kokkuvõte
Sel viisil saate kirjutada VBA-koode koos InStr funktsioon, mis leiab konkreetse stringi asukoha teise antud stringi sees, ja seejärel saate luua oma funktsioone mitmesuguste kasutusvõimaluste jaoks. Lisaks, kui teil on küsimusi, küsige julgelt.