Turinys
Dirbdami su "Excel" VBA kodais susiduriame su keliomis integruotomis funkcijomis, kurios sudėtingą užduotį paverčia nedideliu vienos eilutės kodu. InStr yra tokia Excel VBA funkcija, kuri ieško tam tikros eilutės kitoje duotoje eilutėje, pradedant nuo tam tikros pozicijos. Šiandien parodysiu, kaip galite naudoti InStr VBA funkcija, skirta ieškoti konkrečios eilutės kitoje duotoje eilutėje.
Atsisiųsti praktikos sąsiuvinį
InStr Function.xlsm
Įvadas į VBA InStr funkcija
- Santrauka
Ieško konkrečios eilutės duotoje eilutėje, pradedant nuo nurodytos pozicijos. Jei randama atitiktis, grąžinama pozicija duotoje eilutėje, nuo kurios prasidėjo atitiktis.
- Sintaksė
InStr([start],string1,string2,[compare])
- Argumentai
ARGUMENTAS | REIKALAVIMAS | APRAŠYMAS |
---|---|---|
[pradėti] | Pasirinktinai | Pozicija, nuo kurios bus pradėta paieška. Numatytoji reikšmė yra 1. |
string1 | Reikalinga | eilutė, kurioje ieškoma tam tikros eilutės. |
string2 | Reikalinga | Eilutė, kurios ieškoma duotoje eilutėje. |
[palyginti] | Pasirinktinai | Skaitmeninė reikšmė tarp {-1,0,1,2}, nurodanti palyginimo tipą. Numatytoji reikšmė yra -1 (vbUseCompareOption). Jei parinkties Compare teiginys nenurodytas, atliekamas dvejetainis palyginimas. |
Pastaba:
- Nors [pradėti] argumentas ir [palyginti] argumentas yra neprivalomas, jums reikia [pradėti] argumentas, jei nurodote [palyginti] Priešingu atveju bus padaryta klaida.
- Jei vienas arba abu [pradėti] argumentas ir [palyginti] argumentas yra Null , susidursite su klaida.
- Keturios nurodytos reikšmės [palyginti] argumentas atlieka keturis skirtingus palyginimo tipus. Jie paminėti toliau:
VERTĖ | KONSTANTAS | APRAŠYMAS |
---|---|---|
-1 | vbUseCompareOption | Atlieka palyginimą, nurodytą parinkties Palyginti sakinyje. |
0 | vbBinaryCompare | Atlieka dvejetainį palyginimą. |
1 | vbTextCompare | Atlieka teksto palyginimą. |
2 | vbDatabaseCompare | Atlieka palyginimą pagal jūsų duomenų bazę. |
- Galimybių palyginimas tai teiginys, pateikiamas prieš pradedant pagrindinį VBA kodą. Jame nurodoma, ar kodas prireikus ieškos dvejetainio palyginimo, ar teksto palyginimo.
Parinktis Palyginti tekstą
- Paprastai tariant , dvejetainis palyginimas reiškia, kad lyginama atsižvelgiant į mažąsias ir didžiąsias raides.
- Paprastai tariant , Teksto palyginimas reiškia, kad lyginama neatsižvelgiant į mažąsias ir didžiąsias raides.
- Grąžinama vertė
- Grąžina poziciją string1 iš kurio string2 pradėtas.
- Jei string2 nerandama string1 pradedant nuo pradėti poziciją, grąžinama 0.
- Jei string1 yra nulinio ilgio, grąžinama 0.
- Jei string2 yra nulinio ilgio, grąžinamas argumentas pradėti .
- Ir galiausiai, jei kuris nors iš string1 arba string2 yra . Null , grąžinama klaida.
3 paprasti VBA funkcijos InStr naudojimo pavyzdžiai
Šiame skyriuje pateiksime tris nesudėtingus VBA taikymo pavyzdžius. InStr funkciją "Excel" programoje. Pažiūrėkime pirmąjį pavyzdį InStr funkciją VBA koduose.
1. Sprendimas, ar adresas yra el. pašto adresas, ar ne naudojant VBA InStr funkciją
Šiuo atveju paėmėme duomenų rinkinį, kuriame yra keletas klientų kontaktinių adresų. Mūsų tikslas bus nustatyti, ar adresai yra el. pašto adresai, ar ne.
Dabar sukursime VBA kodą naudodami InStr funkciją, kad nustatytumėte, ar tai yra el. pašto adresas, ar ne. Norėdami tai padaryti, atlikite toliau nurodytus veiksmus.
Žingsniai:
- Pradžioje eikite į Kūrėjas skirtuką ir pasirinkite "Visual Basic ( Arba paspauskite Alt+F11) atidaryti VBA langas.
- Tuomet ant VBA langą, eikite į Insert> Modulis .
- Po to modulyje įklijuokite šį kodą:
Funkcija DECISION(string1 As String) Dim Position As Integer Position = InStr(1, string1, "@", 0) If Position = 0 Then DECISION = "Ne el. paštas" Else DECISION = "El. paštas" End If End Function
- Be to, sukūrėme funkciją SPRENDIMAS . Ji nusprendžia, ar adresas yra el. pašto adresas, ar ne. Pritaikykime funkciją turimam duomenų rinkiniui.
- Dėl ląstelės C5 , įrašykite šią formulę ir automatiškai užpildykite likusias ląsteles naudodami Užpildymo rankena .
=DECISION(B5)
- Kaip matome, nustatėme kiekvieną adresą, nesvarbu, ar tai el. pašto adresas, ar ne.
🎓 Kaip veikia kodas?
- Funkcija DECISION(string1 kaip eilutė)
Pirmiausia sukuriama funkcija, vadinama SPRENDIMAS su eilutės argumentu, pavadintu string1 .
- Dim Pozicija kaip sveikasis skaičius
Jame deklaruojamas sveikojo skaičiaus kintamasis, pavadintas Pozicija .
- Pozicija = InStr(1, string1, "@", 0)
Taip priskiriama reikšmė Pozicija kintamąjį kaip išvesties InStr funkciją su argumentais 1, string1, "@" ir 0 . Trumpai tariant, priskiriama ta adreso vieta, kurioje yra "@" .
- Jei pozicija = 0, tada SPRENDIMAS = "Ne el. paštu"
Jis priskiria išvesties SPRENDIMAS funkciją kaip "Ne el. paštu" , jei Pozicija kintamasis yra 0 , tai reiškia, kad nebuvo "@" adresą.
(Prisiminkite, kad jei duotoje eilutėje nerandama jokios eilutės, InStr funkcija grąžina 0 ).
- Kitaip DECISION = "El. paštas"
Tai priskiria išvesties SPRENDIMAS funkciją kaip "El. paštas" jei buvo "@" adresą. Taigi adresai, kuriuose yra "@" priskiriamos šioms kategorijoms El. paštas , o likusieji priskiriami šioms kategorijoms "Ne el. paštu" .
Panašūs skaitiniai
- Kaip naudoti VBA funkciją UCASE programoje "Excel" (4 pavyzdžiai)
- MsgBox funkcijos naudojimas "Excel VBA" programoje (išsamios gairės)
- Kaip naudoti VBA SPLIT funkciją "Excel" programoje (5 pavyzdžiai)
- LCase funkcijos naudojimas VBA programoje "Excel" (su 4 pavyzdžiais)
- Kaip naudoti "Excel VBA" funkciją "Fix" (4 pavyzdžiai)
2. VBA InStr funkcijos naudojimas Kai kurių el. pašto adresų plėtinių išskyrimas
Čia turime kai kurių klientų el. pašto adresų sąrašą. Šį kartą išskirsime el. pašto adreso plėtinį, pvz., ar jie turi gmail.com arba yahoo.com .
Norėdami tai padaryti, atlikite toliau nurodytus veiksmus.
Žingsniai:
- Pirmiausia, kaip ir ankstesniame metode, atidarykite naują VBA modulį ir į langą įklijuokite šį kodą.
Funkcija EXTENSION(Email As String) Dim Position As Integer Position = InStr(1, Email, "@", 0) EXTENSION = Right(Email, (Len(Email) - Position)) End Function
- Be to, sukūrėme funkciją IŠPLĖTIS . Jis ištraukia bet kurio el. pašto adreso plėtinį.
- Be to, pritaikykime šią funkciją turimam duomenų rinkiniui. Pirmiausia ląstelėje įveskite šią formulę C5 ir dukart spustelėkite Užpildymo rankena .
=IŠPLĖTIMAS(B5)
- Galiausiai matome, kad sėkmingai ištraukėme visų el. laiškų plėtinį.
🎓 Kaip veikia kodas?
- Funkcija EXTENSION(El. paštas kaip eilutė)
Taip sukuriama nauja funkcija IŠPLĖTIS , su eilutės argumentu, pavadintu El. paštas .
- Dim Pozicija kaip sveikasis skaičius
Šioje dalyje deklaruojamas sveikojo skaičiaus kintamasis, pavadintas Pareigos.
- Pozicija = InStr(1, El. paštas, "@", 0)
Taip priskiriama reikšmė Pozicija kintamąjį kaip išvesties InStr funkciją su argumentais 1, El. paštas, "@" ir 0 . Trumpai tariant, taip priskiriama pozicija El. paštas kur yra "@" .
- EXTENSION = Right(El. paštas, (Len(El. paštas) - pozicija))
Šioje dalyje priskiriamas išvesties IŠPLĖTIS funkciją, nes simboliai po simbolio "@" Tai yra būtinas pratęsimas El. paštas .
3. Vardo arba pavardės išskyrimas iš vardo naudojant VBA InStr funkciją
Galiausiai atliksime visiškai kitokią užduotį. Šį kartą turėsime kelių įmonės darbuotojų vardus. Ir pabandysime sukurti funkciją, kuri išgautų arba darbuotojų vardą, arba pavardę.
Norėdami tai padaryti, atlikite toliau nurodytus veiksmus.
Žingsniai:
- Pirma, panašiai kaip 1 metodas , įklijuokite toliau pateiktą kodą į naują VBA lango modulį.
Funkcija 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
- Čia sukūrėme funkciją, pavadintą TRUMPAS PAVADINIMAS kuri iš vardo ištraukia vardą arba pavardę. Pritaikykime šią formulę savo duomenų rinkiniui.
- Iš pradžių, norėdami išgauti pirmąjį vardą, ląstelėje įrašykite toliau pateiktą formulę C5 .
= TRUMPINYS(B5,-1)
- Galiausiai, norėdami išgauti pavardes, užrašome šią formulę D5 :
= TRUMPINYS(B5,1)
- Vėliau, jei automatiškai užpildysime likusias ląsteles Užpildymo tvarkyklė , pamatysime norimą rezultatą.
🎓 Kaip veikia kodas?
- Funkcija SHORTNAME(Name As String, First_or_Last As Integer)
Ji sukuria naują funkciją, pavadintą TRUMPAS PAVADINIMAS su vienu String argumentu, pavadintu Pavadinimas ir vieną sveikojo skaičiaus argumentą, pavadintą Pirmasis_arba_paskutinis .
- Dim Pertrauka kaip sveikasis skaičius
Šioje dalyje deklaruojamas naujas sveikojo skaičiaus kintamasis, pavadintas Pertrauka .
- Break = InStr(1, Name, " ", 0)
Jis priskiria reikšmę Pertrauka kintamąjį kaip išvesties InStr funkciją su argumentais 1, pavadinimas, " " ir 0 . Trumpai tariant, taip priskiriama pozicija Pavadinimas kur yra tarpas (" ").
- Jei First_or_Last = -1 tada SHORTNAME = Left(Name, Break - 1)
Ši eilutė priskiria išvesties TRUMPAS PAVADINIMAS funkciją, nes simboliai prieš erdvė , jei Pirmasis_arba_paskutinis argumentas yra -1. Tai yra pirmasis vardas.
- SHORTNAME = Right(Name, Len(Name) - Break)
Šioje dalyje priskiriamas išvesties TRUMPAS PAVADINIMAS funkciją, nes simboliai po erdvė , jei Pirmas_arba_paskutinis argumentas yra 1. Tai yra pavardė.
Išvada
Tokiu būdu galite rašyti VBA kodus naudodami InStr funkciją, kuri nustato tam tikros eilutės padėtį kitoje duotoje eilutėje, o tada galite kurti savo funkcijas įvairiems tikslams. Be to, jei turite klausimų, nedvejodami kreipkitės į mus.