Ynhâldsopjefte
Wylst wy wurkje mei Excel VBA-koades, komme wy in pear ynboude funksjes tsjin dy't in komplekse taak omsette yn in lytse ien-line koade. InStr is sa'n funksje beskikber yn Excel VBA dy't siket nei in bepaalde tekenrige binnen in oare opjûne tekenrige begjinnend fan in opjûne posysje. Hjoed sil ik sjen litte hoe't jo de funksje InStr yn VBA brûke kinne om in spesifike tekenrige te sykjen binnen in oare opjûne tekenrige.
Download Practice Workbook
InStr Function.xlsm
Yntroduksje ta VBA InStr Function
- Gearfetting
Syket nei in spesifike tekenrige binnen in opjûne tekenrige, begjinnend fan in opjûne posysje. As in oerienkomst fynt, jout de posysje werom yn 'e opjûne tekenrige wêr't de wedstriid begon.
- Syntaksis
InStr([start ],string1,string2,[fergelykje])
- Arguminten
ARGUMENT | FERGESE | BESKRYWING
|
---|---|---|
[begjin] | Opsjoneel | De posysje wêrfan it sil begjinne te sykjen. De standert is 1. |
string1 | Required | De tekenrige wêryn it siket nei in opjûne tekenrige. |
string2 | Required | De tekenrige wêrnei't it siket binnen in opjûne tekenrige. |
[fergelykje] | Opsjoneel | In numerike wearde tusken {-1,0,1,2} dy't it type ferliking spesifisearret. Destandert is -1 (vbUseCompareOption). As de Option Compare statement net oantsjutte is, fier dan Binary Comparison. |
Opmerking:
- Hoewol de [begjin] argumint en it [fergelykje] argumint binne opsjoneel, jo hawwe it argumint [begjin] nedich as jo it argumint [fergelykje] oantsjutte. Oars sil it in flater opsmite.
- As ien of beide fan it [begjin] argumint en it [fergelykje] argumint Null<2 is>, sille jo in flater krije.
- De fjouwer oantsjutte wearden yn it argumint [fergelykje] fiere fjouwer ferskillende soarten fergeliking út. Se wurde hjirûnder neamd:
WAARDE | KONSTANT | BESKRYWING
|
---|---|---|
-1 | vbUseCompareOption | Fiert de fergeliking út yn de Opsje Fergelykje statement. |
0 | vbBinaryCompare | Fiert in Binêre ferliking út. |
1 | vbTextCompare | Fiert in tekstfergeliking út. |
2 | vbDatabaseCompare | Fiert in fergeliking út op basis fan jo databank . |
- Opsje Fergelykje statement is in ferklearring foarsjoen foardat de haad VBA-koade begjint. It spesifisearret oft de koade sil sykje nei in Binêre Fergeliking of Tekstfergeliking as it nedich is.
Opsje Ferlykje tekst
-
- Yn ienfâldige termen , Binary Comparison betsjut haadlettergefoelichfergeliking.
- Yn ienfâldige termen betsjut tekstfergeliking hichte-yngefoelige fergeliking.
- Returnwearde
- Jout de posysje werom yn 'e string1 wêrfan de string2 begon.
- Yn gefal string2 net fûn is binnen string1 begjinnend fan de start -posysje, jout 0.
- As de string1 fan nul-lingte is, jout 0.
- As de string2 fan nul-lingte is, jout it argumint start werom.
- En as lêste, as ien fan de string1 of string2 is Null , jout in flater werom.
3 maklike foarbylden om VBA InStr-funksje te brûken
In dizze seksje sille wy trije maklike foarbylden sjen fan it tapassen fan de VBA InStr -funksje yn Excel. Litte wy it earste foarbyld sjen fan de funksje InStr yn VBA-koades.
1. Beslút oft in adres in e-mailadres is of net troch VBA InStr-funksje te brûken
Hjir hawwe wy in gegevensset nommen mei guon kontaktadressen fan klanten. Us doel hjir sil wêze om te identifisearjen oft de adressen e-mailadressen binne of net.
No sille wy in VBA-koade ûntwikkelje mei de InStr funksje om te identifisearjen oft it in e-postadres is of net. Om dat te dwaan, folgje de stappen hjirûnder.
Stappen:
- Gean yn it begjin nei it ljepblêd ûntwikkelder en selektearje Visual Basic (Of druk op Alt+F11) om de VBA te iepenjenfinster.
- Dan, op it VBA -finster, gean nei Ynfoegje > Module .
- Dernei plakke de folgjende koade op 'e module:
7053
- Boppedat hawwe wy in funksje makke mei de namme DECISION . It beslút oft in adres in e-mailadres is of net. Litte wy de funksje tapasse op de gegevensset dy't wy hawwe.
- Op sel C5 skriuw de folgjende formule op en folje dan de rest fan 'e sellen automatysk yn mei Fill Handle .
=DECISION(B5)
- As wy kinne sjen, hawwe wy elk adres identifisearre oft it in e-mailadres is of net.
🎓 Hoe wurket de koade?
- Funksje DECISION(string1 As String)
Earst makket dit in funksje mei de namme DECISION mei in string argumint neamd string1 .
- Dim Posysje As Integer
It ferklearret in hiel getal fariabele mei de namme Posysje .
- Posysje = InStr(1, string1, "@", 0)
Dit jout de wearde fan de Posysje fariabele as de útfier fan de funksje InStr mei de arguminten 1, string1, "@" en 0 . Koartsein, dit jout de posysje yn it adres ta wêr't in “@” is.
- As Posysje = 0 Dan DECISION = "Net e-post"
It jout de útfier fan 'e funksje BESLIS as "Net e-post" , as de Posysje fariabele is 0 , dat betsjut dat der gjin “@” wie yn it adres.
(Tink derom as in tekenrige net fûn is binnen de opjûne tekenrige, de InStr -funksje jout 0 werom).
- Else DECISION = "E-post"
Dit jout de útfier fan de BESLIS funksje as “E-post” as der in “@” yn it adres stie. Sa wurde de adressen wêr't de "@" is, kategorisearre as E-post , en de rest wurde kategorisearre as "Net e-post" .
Gelykbere lêzingen
- Hoe kinne jo de VBA UCASE-funksje brûke yn Excel (4 foarbylden)
- Gebrûk MsgBox-funksje yn Excel VBA (In folsleine rjochtline)
- Hoe kinne jo de VBA SPLIT-funksje brûke yn Excel (5 foarbylden)
- Brûk LCase-funksje yn VBA yn Excel (mei 4 Foarbylden)
- Hoe kinne jo de fixfunksje brûke yn Excel VBA (4 foarbylden)
2. Gebrûk fan VBA InStr-funksje foar De útwreiding fan guon e-mailadressen útpakke
Hjir hawwe wy in list mei guon e-mailadressen fan guon klanten. Dizze kear sille wy de útwreiding fan it e-postadres ekstrahearje, lykas oft se gmail.com of yahoo.com hawwe.
Om dat te dwaan, folgje de stappen hjirûnder.
Stappen:
- Om te begjinnen, lykas de foarige metoade, iepenje in nije VBA module en plak de folgjende koade yn it finster.
7557
- Dêrneist hawwe wy in funksje makke mei de namme útwreiding . It ekstrakt de útwreiding fan elk e-mailadres.
- Litte wy dizze funksje fierder tapasse op de gegevensset dy't wy hawwe. Fier earst dizze formule yn op sel C5 en dûbelklik dan op de Fillhandtak .
=EXTENSION(B5)
- As lêste kinne wy sjogge dat wy de tafoeging fan alle e-postberjochten mei súkses hawwe ekstrahearre.
🎓 Hoe wurket de koade?
- Funksje EXTENSION(E-post as tekenrige)
Dit makket in nije funksje mei de namme EXTENSION , mei in string argumint neamd E-post .
- Dim Posysje As Integer
Dit diel ferklearret in hiel getal fariabele mei de namme Posysje .
- Posysje = InStr(1, Email, "@", 0)
Dit jout de wearde fan de Posysje fariabele as de útfier fan de funksje InStr mei de arguminten 1, Email, "@" en 0 . Koartsein, dit jout de posysje yn de E-post dêr't in “@” is.
- EXTENSION = Right(Email, (Len) (E-post) - Posysje))
Dit diel jout de útfier fan de EXTENSION -funksje as de tekens nei it symboal “@” . Dit is de fereaske útwreiding fan de E-post .
3. De foarnamme of efternamme út in namme ekstrahearje troch VBA InStr-funksje te brûken
Uteinlik sille wy in unyk oare taak útfiere. Dizze kear hawwe wy de nammen fan guon meiwurkers fanin bedriuw. En wy sille besykje om in funksje te bouwen om of de foarnamme of de efternamme fan de meiwurkers te ekstrahearjen.
Folgje de stappen hjirûnder.
Stappen:
- Earst, fergelykber mei metoade 1 , plak de koade hjirûnder yn in nije module yn it VBA finster.
9859
- Hjir hawwe wy in funksje makke mei de namme SHORTNAME dy't de foarnamme of de efternamme út in namme ekstrahearret. Litte wy dizze formule tapasse op ús gegevensset.
- Earst, om de foarnamme te ekstrahearjen, skriuw de formule hjirûnder op yn sel C5 .
=SHORTNAME(B5,-1)
- As lêste, om de lêste nammen út te heljen, skriuwe wy de folgjende formule yn D5 :
=SHORTNAME(B5,1)
- Dernei, as wy de rest fan 'e sellen automatysk ynfolje mei Fill Handler , sille wy ús winske resultaat sjen.
🎓 Hoe wurket de koade?
- Funksje SHORTNAME(Name As String, First_or_Last As Integer)
It makket in nije funksje mei de namme SHORTNAME mei ien String-argumint neamd Namme en ien Integer Argument mei de namme Earste_of_Lêste .
- Dim Break As Integer
Dit diel ferklearret in nije hiele getal fariabele mei de namme Break .
- Break = InStr(1, Name, ” “, 0)
It jout de wearde fan de fariabele Break as de útfier fan de funksje InStr mei de arguminten 1, Namme, “ ” en 0 . Koartsein, dit jout de posysje yn 'e Namme wêr't in romte (" ” is).
- As First_or_Last = -1 Then SHORTNAME = Left(Name, Break – 1)
Dizze rigel jout de útfier fan de funksje SHORTNAME as de tekens foar de space , as it argumint First_or_Last -1 is. Dit is de foarnamme.
- SHORTNAME = Right(Name, Len(Name) – Break)
Dit diel jout de útfier fan de SHORTNAME funksjonearje as de tekens nei de spaasje , as it First_or_Last argumint 1 is. Dit is de efternamme.
Konklúzje
Op dizze manier kinne jo VBA-koades skriuwe mei de funksje InStr dy't de posysje fan in spesifike tekenrige fynt binnen in oare opjûne string, en dan kinne jo meitsje dyn eigen funksjes foar in ferskaat oan gebrûk. Fierder, as jo fragen hawwe, stel it ús dan frij.