Kaip rasti eilutę su VBA programa "Excel" (8 pavyzdžiai)

  • Pasidalinti
Hugh West

Įgyvendinti VBA yra veiksmingiausias, greičiausias ir saugiausias būdas atlikti bet kokią operaciją "Excel" programoje. Šiame straipsnyje parodysime, kaip rasti tam tikras eilutes kitoje duotoje eilutėje naudojant VBA "Excel" programoje.

Atsisiųsti praktikos šabloną

Nemokamą praktinį "Excel" šabloną galite atsisiųsti iš čia.

VBA rasti eilutėje String.xlsm

Funkcija InStr

"Microsoft Excel" turi integruotą funkciją, vadinamą funkcija InStr rasti konkrečių eilučių padėtį tam tikroje eilutėje.

Bendroji sintaksė:

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

Čia,

Argumentai Privalomas / pasirenkamas Apibrėžimas
pradėti Pasirinktinai Pradinė paieškos padėtis.
  • Pagal numatytuosius nustatymus InStr funkcija skaičiuoja simbolio poziciją skaičiuodama nuo 1, o ne nuo pradinės pozicijos. Taigi, jei norite, galite palikti šią reikšmę tuščią.
string1 Reikalinga Paieškos eilutė, pirminė eilutė.
string2 Reikalinga Eilutė, kurios reikia ieškoti pirminėje eilutėje.
palyginti Pasirinktinai Svetainė InStr funkcija pagal numatytuosius nustatymus skiria didžiąsias ir mažąsias raides. InStr , tada čia galite perduoti argumentą, kad būtų atliktas tam tikras palyginimas. Šis argumentas gali būti šios reikšmės,
  • vbBinaryCompare -> atliekamas dvejetainis palyginimas, grąžinama reikšmė 0
  • vbTextCompare -> atliekamas teksto palyginimas, grąžinama reikšmė 1
  • vbDatabaseCompare -> atlieka duomenų bazės palyginimą, grąžinama reikšmė 2

Pagal numatytuosius nustatymus, InStr užima vbBinaryCompare kaip palyginimo argumentas.

8 paprasti pavyzdžiai, kaip rasti konkrečią eilutės vietą duotoje eilutėje naudojant VBA

Pažiūrėkime keletą paprastų pavyzdžių, kaip gauti tam tikrų eilučių pozicijas duotoje eilutėje naudojant VBA .

1. VBA teksto padėčiai eilutėje rasti

Toliau pateikiamas pavyzdys InStr rasti teksto poziciją eilutėje.

  • Paspauskite Alt + F11 klaviatūroje arba eikite į skirtuką Programuotojas -> "Visual Basic atidaryti "Visual Basic" redaktorius .

  • Iššokančiame kodo lange meniu juostoje spustelėkite Insert -> Modulis .

  • Dabar kodo lange parašykite paprastą InStr programą, esančią viduje VBA subprocedūra (žr. toliau).
 Sub INSTR_Example() MsgBox InStr("Laimė yra pasirinkimas", "pasirinkimas") End Sub 

Dabar jūsų kodas paruoštas paleisti.

  • Paspauskite F5 klaviatūroje arba meniu juostoje pasirinkite Run -> Run Sub/UserForm Taip pat galite tiesiog spustelėti maža piktograma "Play submeniu juostoje, kad paleistumėte makrokomandą.

Pamatysite, kad iškylančiame pranešimo lange bus pateiktas skaičius, nurodantis poziciją teksto, kurį norite patikrinti.

Paaiškinimas:

Mūsų pagrindinė eilutė " Laimė yra pasirinkimas " yra 21 raidės sakinys (su tarpais), o mes norėjome rasti teksto " pasirinkimas " toje eilutėje. Tekstas " pasirinkimas " prasidėjo nuo 16-osios pirminės eilutės pozicijos, todėl gavome skaičių 16 kaip mūsų išvestį pranešimo langelyje.

2. VBA teksto radimas tam tikroje eilutės vietoje

Dabar išsiaiškinkime, kas nutiktų, jei norėtume gauti padėtį iš tam tikro skaičiaus.

  • Kaip ir anksčiau, atidarykite "Visual Basic" redaktorius Kūrėjas skirtukas ir Įdėkite a Modulis kodo lange.
  • Kodo lange parašykite paprastą InStr programą, parodytą aukščiau, ir perduokite pradžios argumento reikšmę pagal poziciją, nuo kurios norite skaičiuoti tekstą.
 Sub INSTR_Example() MsgBox InStr(17, "Laimė yra pasirinkimas", "pasirinkimas") End Sub 

  • Kitas, Paleisti kodą.

Pamatysite, kad iškylančiame pranešimo lange bus pateiktas skaičius, nurodantis poziciją teksto pradedant nuo tam tikros padėties kurį norėjote patikrinti.

Paaiškinimas:

Kaip jau žinojome (iš pirmojo etapo diskusijų), tekstas " pasirinkimas " prasidėjo nuo pozicijos 16 , todėl įterpėme du " pasirinkimas " pirminėje eilutėje ir nustatykite 17 kaip mūsų 1-asis parametras, kad praleistume pirmąjį " pasirinkimas ". Taigi, mes Paleisti pirmiau minėtą makrokomandą ir jis parodė mums pozicijos numerį 27 kuris tiksliai atitinka pozicijos numerį antrasis " pasirinkimas " pateiktoje eilutėje.

3. VBA teksto radimas naudojant didžiosios ir mažosios raidžių skirtumo funkciją InStr eilutėje

Nuo įvedimo InStr funkcija jau žinote, kad pagal numatytuosius nustatymus InStr funkcija priklauso nuo didžiųjų raidžių. Tai išsiaiškinsime pateikdami pavyzdį.

Žr. VBA kodą, kuriame norėjome rasti žodžio " Pasirinkimas " su didžioji raidė "C" eilutėje " Laimė yra pasirinkimas ", kur pasirinkimas rašomas su mažoji raidė "c" .

  • Paleisti kodą ir raskite 0 kaip mūsų išvestį.

Taip yra todėl, kad InStr funkcija apdoroja didžioji raidė "C" ir mažoji raidė "c" skirtingai. Taigi ji ieškojo žodžio " Pasirinkimas " eilutėje ir negavo jokio atitikmens, todėl grąžino 0 .

  • Kad InStr funkcija Atskirų raidžių , palyginkite argumentą į vbTextCompare (žr. toliau).
 Sub INSTR_Example() MsgBox InStr(1, "Laimė yra pasirinkimas ir pasirinkimas", "Pasirinkimas", "Choice", vbTextCompare) End Sub 

  • Paleisti kodą.

Gausite teksto padėtis iš eilutės, ar tekstas parašytas didžiosios ar mažosios raidės .

4. VBA teksto paieškai iš dešiniosios eilutės pusės

Iki šiol InStr funkcija mums pateikdavo tik eilutės kairės pusės poziciją. Tačiau ką daryti, jei norite rasti teksto poziciją dešinėje eilutės pusėje.

Funkcija InStrRev ieško iš dešinės. InStrRev funkcija veikia labai panašiai kaip InStr funkciją ir ji suras jums teksto poziciją iš dešinėje pusėje eilutėje.

Kad suprastumėte skirtumą, žr. šiuos pavyzdžius.

  • Jei paleisime šį kodą su InStr funkcija,

jis mums nurodo padėtį ( 16 ) pirmojo teksto " pasirinkimas ".

  • Tačiau jei paleisime tą patį kodą su InStrRev Tada funkcija,

jis mums nurodo padėtį ( 27 ) paskutinio teksto " pasirinkimas ".

Panašūs skaitiniai:

  • FindNext naudojant "Excel" VBA (2 pavyzdžiai)
  • Kaip rasti ir pakeisti naudojant VBA (11 būdų)
  • Tikslaus atitikmens paieška naudojant VBA programoje "Excel" (5 būdai)

5. VBA simbolio padėčiai eilutėje rasti

Taip pat galite rasti tam tikro simbolio vietą eilutėje tokiu pat būdu, kaip ir tekstą.

  • Nukopijuokite šį kodą į VBA kodo langas
 Sub Find_Character() Dim z As Long z = InStr("Laimė yra pasirinkimas", "e") MsgBox z End Sub 

  • Ir Paleisti makrokomandą.

Pirmasis " e " mūsų pateiktoje eilutėje yra ties skaičiumi 7 pozicija.

6. VBA eilutės posričių paieška eilutėje

Čia sužinosime, kaip nustatyti, ar eilutėje yra poaibis arba ne.

Norėdami tai gauti, turime paleisti IF teiginys mūsų kode.

  • Kaip ir anksčiau, atidarykite "Visual Basic" redaktorius Kūrėjas skirtukas ir Įdėkite a Modulis kodo lange.
  • Kodo lange nukopijuokite ir įklijuokite šį kodą.
 Public Sub FindSub() If InStr("Laimė yra pasirinkimas", "pasirinkimas") = 0 Then MsgBox "Nerastas atitikmuo" Else MsgBox "Rastas atitikmuo" End If End Sub 

Dabar jūsų kodas paruoštas paleisti.

  • Paleisti makrokomandą.

Jei jūsų eilutėje yra posekmė tada gausite rastas atitikmuo , priešingu atveju bus grąžinta, kad nerastas atitikmuo. Mūsų pavyzdyje norėjome išsiaiškinti, ar mūsų pirminė eilutė " Laimė yra pasirinkimas " yra žodis " pasirinkimas " arba ne. Kadangi taip ir yra, gauname Rastas atitikmuo rezultatas.

7. VBA eilutei ląstelių diapazone rasti

Galite ieškoti tam tikro teksto eilutės ląstelės intervale ir grąžinti tam tikrą eilutę.

Pažvelkite į šį pavyzdį, kuriame rasime " dr. ", o radus atitikmenį bus grąžinama " Gydytojas ".

  • Toliau pateikiamas kodas, kuriuo galima gauti pirmiau aptartą rezultatą,
 Sub Find_String_in_Range() Dim cell As Range For Each cell In Range("B5:B10") If InStr(cell.Value, "Dr.")> 0 Then cell.Offset(0, 1).Value = "Doctor" End If Next cell End Sub 

  • Paleisti kodas ir rezultatas pateikiamas toliau

  • Makro galite keisti pagal savo poreikius. Pavyzdžiui, jei norite rasti " Prof. " bet kurioje eilutės ląstelėje ir gaukite " Profesorius " kaip grąžinamąjį, tada tiesiog perduokite " Prof. " kaip reikšmę, o ne " Dr. ." ketvirtojoje makrokomandos eilutėje ir " Profesorius " vietoj " Gydytojas " 5-oje makrokomandos eilutėje ir atitinkamai apibrėžkite ląstelių intervalo numerį.

8. VBA eilutei ląstelėje rasti

Taip pat galite ieškoti tam tikro teksto vienoje eilutės ląstelėje ir grąžinti tam tikrą eilutę.

  • Nukopijuokite šį kodą ir įklijuokite jį į kodo langą.
 Sub Find_String_in_Cell() If InStr(Range("B5").Value, "Dr.")> 0 Then Range("C5").Value = "Doctor" End If End Sub 

Bus ieškoma " dr. " in Ląstelė B5 ir, jei randa atitikmenį, grąžina " Gydytojas " in Ląstelė C5 .

  • Makro galite keisti pagal savo poreikius. Pavyzdžiui, jei norite rasti " Prof. " bet kurioje eilutės ląstelėje ir gaukite " Profesorius " kaip grąžinamąjį, tada tiesiog perduokite " Prof. " kaip reikšmę, o ne " Dr. ." 2-oje makrokomandos eilutėje ir " Profesorius " vietoj " Gydytojas " 3-iojoje makrokomandos eilutėje ir atitinkamai apibrėžkite ląstelės nuorodos numerį.

Išvada

Šiame straipsnyje parodyta, kaip rasti tam tikrus tekstus "Excel" eilutėje naudojant VBA makrokomandos. Tikiuosi, kad šis straipsnis jums buvo labai naudingas. Drąsiai užduokite bet kokius su šia tema susijusius klausimus.

Hugh Westas yra labai patyręs Excel treneris ir analitikas, turintis daugiau nei 10 metų patirtį šioje srityje. Jis yra įgijęs apskaitos ir finansų bakalauro bei verslo administravimo magistro laipsnius. Hugh turi aistrą mokymui ir sukūrė unikalų mokymo metodą, kurį lengva sekti ir suprasti. Jo ekspertinės žinios apie „Excel“ padėjo tūkstančiams studentų ir specialistų visame pasaulyje tobulinti savo įgūdžius ir tobulėti savo karjeroje. Savo tinklaraštyje Hugh dalijasi savo žiniomis su pasauliu, siūlydamas nemokamus „Excel“ vadovėlius ir internetinius mokymus, kad padėtų asmenims ir įmonėms išnaudoti visą savo potencialą.