Kuidas leida string VBA-ga Excelis (8 näidet)

  • Jaga Seda
Hugh West

Rakendamine VBA on kõige tõhusam, kiirem ja turvalisem meetod, et käivitada Excelis mis tahes operatsioone. Selles artiklis näitame, kuidas leida teatud stringid teises antud stringis, kasutades selleks VBA Excelis.

Lae alla praktika mall

Tasuta praktilise Exceli malli saate alla laadida siit.

VBA leidmiseks String.xlsm'is

InStr funktsioon

Microsoft Excelil on sisseehitatud funktsioon nimega funktsioon InStr et leida konkreetsete stringide positsioon antud stringis.

Üldine süntaks:

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

Siin,

Argumendid Kohustuslik/ vabatahtlik Määratlus
start Valikuline Otsingu lähtepositsioon.
  • Vaikimisi on InStr funktsioon arvutab tähemärgi positsiooni, lugedes alates 1, mitte alguspositsioonist. Seega võite selle tühjaks jätta, kui soovite.
string1 Nõutav String, mida otsida, Primary String.
string2 Nõutav String, mida otsitakse primaarsest stringist.
võrdle Valikuline The InStr funktsioon on vaikimisi suur- ja väiketähtede suhtes tundlik. Kuid kui soovite käivitada suur- ja väiketähtede suhtes tundmatut InStr , siis saate siin edastada argumendi, et teostada teatud võrdlust. See argument võib olla järgmised väärtused,
  • vbBinaryCompare -> viib läbi binaarse võrdluse, tagastab väärtuse 0
  • vbTextCompare -> viib läbi tekstivõrdluse, tagastab väärtuse 1
  • vbDatabaseCompare -> viib läbi andmebaasi võrdluse, tagastab väärtuse 2

Vaikimisi, InStr võtab vbBinaryCompare võrdlusargumendiks.

8 lihtsat näidet konkreetse stringi asukoha leidmiseks antud stringis VBA abil

Vaatame mõned lihtsad näited, et saada teatud stringide positsioonid antud stringis kasutades VBA .

1. VBA teksti asukoha leidmiseks stringis

Allpool on toodud näide InStr et leida teksti asukoht stringis.

  • Press Alt + F11 klaviatuuril või mine vahekaardile Arendaja -> Visual Basic avada Visual Basic toimetaja .

  • Pikakoodi aknas klõpsake menüüribal nuppu Insert -> Moodul .

  • Nüüd kirjutage koodiaknas lihtne InStr programmi sees VBA alamprotseduur (vt allpool).
 Sub INSTR_Example() MsgBox InStr("Õnn on valik", "valik") End Sub 

Teie kood on nüüd valmis käivitamiseks.

  • Press F5 klaviatuuril või valige menüüribalt Run -> Run Sub/UserFormi käivitamine Võite ka lihtsalt klõpsata väike Play ikoon allmenüüribal makro käivitamiseks.

Te näete, et hüpikaken annab teile teateid number, mis deklareerib positsiooni teksti, mida soovite kontrollida.

Selgitus:

Meie esmane string, " Õnn on valik " on 21-täheline lause (koos tühikutega) ja me tahtsime leida teksti " valik " selles stringis. Tekst " valik " algas 16. positsioonist esmase string, seega saime number 16 meie väljundina sõnumikastis.

2. VBA teksti leidmiseks stringi konkreetsest positsioonist

Nüüd uurime, mis juhtuks, kui tahaksime saada positsiooni teatud numbrist.

  • Samamoodi nagu varem, avatud Visual Basic toimetaja alates Arendaja vahekaart ja Sisesta a Moodul koodiaknas.
  • Kirjutage koodiaknas lihtne InStr eespool näidatud programmi ja edastage alguse argumendi väärtus vastavalt positsioonile, millest alates soovite oma teksti lugeda.
 Sub INSTR_Example() MsgBox InStr(17, "Õnn on valik", "valik") End Sub 

  • Järgmine, Käivita kood.

Te näete, et hüpikaken annab teile teateid number, mis deklareerib positsiooni tekstist alustades teatavast positsioonist mida te tahtsite kontrollida.

Selgitus:

Kuna me juba teadsime (1. faasi arutelust), et tekst " valik " alustas positsioonilt 16 , seega lisasime kaks " valik " primaarses stringis ja seada 17 meie 1. parameetrina, et jätta esimene " valik ". Nii et me Käivita ülaltoodud makro ja see näitas meile positsiooni number 27 mis on täpselt positsiooni number teine " valik " antud stringis.

3. VBA, et leida teksti sisestusriba sisestusfunktsiooniga InStr, mille puhul ei arvestata suur- ja väiketähestikku

Alates kasutusele võtmisest InStr funktsiooniga te juba teate, et vaikimisi on InStr funktsioon on suur- ja väiketähtede suhtes tundlik. Selgitame selle välja näite abil.

Vt järgmist VBA kood, kus me tahtsime leida sõna " Valik " koos suur "C" stringis " Õnn on valik ", kus valik on kirjutatud tähega väike "c" .

  • Käivita koodi ja leida 0 meie väljundiks.

Seda seetõttu, et InStr funktsioon käsitleb suur "C" ja väike "c" erinevalt. Seega otsitakse sõna " Valik " stringis ja ei saanud ühtegi vastet, seega tagastati 0 .

  • Et teha InStr funktsioon suur- ja väiketähelepanuta , seadke võrdlusargumendiks vbTextCompare (vt allpool).
 Sub INSTR_Example() MsgBox InStr(1, "Õnn on valik ja valik", "Valik", vbTextCompare) End Sub 

  • Käivita kood.

Te saate teksti asukoht stringist, olenemata sellest, kas tekst on kirjutatud kujul suured või väikesed tähed .

4. VBA teksti leidmiseks stringi paremalt poolt

Seni on InStr funktsioon andis meile ainult positsiooni stringi vasakult poolt. Aga mis siis, kui soovite leida teksti positsiooni stringi paremalt poolt.

Funktsioon InStrRev otsingud paremalt poolt. InStrRev funktsioon töötab väga sarnaselt funktsiooniga InStr funktsioon ja see leiab teile teksti asukoha teksti alates paremal pool stringi kohta.

Vaadake järgmisi näiteid, et mõista erinevust.

  • Kui käivitame järgmise koodi koos InStr funktsioon siis,

see annab meile positsiooni ( 16 ) esimese teksti " valik ".

  • Aga kui me käivitame sama koodi koos InStrRev Funktsioon siis,

see annab meile positsiooni ( 27 ) viimase teksti " valik ".

Sarnased lugemised:

  • FindNext VBA kasutamine Excelis (2 näidet)
  • Kuidas leida ja asendada VBA abil (11 võimalust)
  • Leia täpne vaste VBA abil Excelis (5 võimalust)

5. VBA tähemärgi asukoha leidmiseks stringis

Samamoodi nagu teksti leidmisel saab leida ka teatud tähemärgi positsiooni stringis.

  • Kopeeri järgmine kood oma VBA koodiaken
 Sub Find_Character() Dim z As Long z = InStr("Õnn on valik", "e") MsgBox z End Sub 

  • Ja Käivita makro.

Esimene " e " meie antud stringis on number 7 positsioon.

6. VBA, et leida stringis alajaotust

Siin me õpime, kuidas leida, kas string sisaldab substring või mitte.

Selleks tuleb meil käivitada IF avaldus meie koodis.

  • Samamoodi nagu varem, avatud Visual Basic toimetaja alates Arendaja vahekaart ja Sisesta a Moodul koodiaknas.
  • Kopeerige koodiaknas järgmine kood ja kleepige see sisse.
 Public Sub FindSub() If InStr("Õnne on valik", "valik") = 0 Then MsgBox "Ei leitud" Else MsgBox "Vastus leitud" End If End Sub 

Teie kood on nüüd valmis käivitamiseks.

  • Käivita makro.

Kui teie string sisaldab alamjada siis saate vaste leitud , vastasel juhul tagastab see no match found. Meie näites tahtsime välja selgitada, kas meie esmane string " Õnn on valik " sisaldab sõna " valik " või mitte. Kuna see on nii, siis saame Vastus leitud tulemus.

7. VBA stringi leidmiseks lahtri vahemikus

Saate otsida teatud teksti stringi lahtri vahemikust ja tagastada teatud stringi.

Vaadake järgmist näidet, kus me leiame " Dr. " ja kui leidub vaste, siis tagastab see " Doktor ".

  • Allpool on kood eespool kirjeldatud tulemuse saamiseks,
 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 

  • Käivita kood ja tulemus on näidatud allpool

  • Makrot saate muuta vastavalt oma vajadusele. Näiteks kui soovite leida " Prof. " mis tahes lahtrisse string, ja saada " Professor " tagastamiseks, siis edastage lihtsalt " Prof. " asemel " Dr. ." makro 4. reas ja " Professor " asemel " Doktor " makro 5. reas ja määrake vastavalt lahtri vahemiku number.

8. VBA stringi leidmiseks lahtris

Võite ka otsida kindlat teksti ühes lahtris stringist ja tagastab teatud stringi.

  • Kopeeri järgmine kood ja kleebi see koodiaknasse.
 Sub Find_String_in_Cell() If InStr(Range("B5").Value, "Dr.")> 0 Then Range("C5").Value = "Doctor" End If End Sub 

See otsib " Dr. " in Raku B5 ja kui ta leiab vaste, siis tagastab " Doktor " in Raku C5 .

  • Makrot saate muuta vastavalt oma vajadusele. Näiteks kui soovite leida " Prof. " mis tahes lahtrisse string, ja saada " Professor " tagastamiseks, siis edastage lihtsalt " Prof. " asemel " Dr. ." makro 2. reas ja " Professor " asemel " Doktor " makro 3. reas ja määrake lahtri viitenumber vastavalt.

Kokkuvõte

See artikkel näitas teile, kuidas leida teatud tekstid stringis Excelis, kasutades VBA makro. Ma loodan, et see artikkel on olnud teile väga kasulik. Võite julgelt esitada mis tahes küsimusi selle teema kohta.

Hugh West on suurte kogemustega Exceli koolitaja ja analüütik, kellel on selles valdkonnas üle 10-aastane kogemus. Tal on raamatupidamise ja rahanduse bakalaureusekraad ning ärijuhtimise magistrikraad. Hugh’l on kirg õpetamise vastu ning ta on välja töötanud ainulaadse õpetamisviisi, mida on lihtne järgida ja mõista. Tema Exceli ekspertteadmised on aidanud tuhandetel õpilastel ja spetsialistidel üle maailma oma oskusi parandada ja karjääris silma paista. Oma ajaveebi kaudu jagab Hugh oma teadmisi maailmaga, pakkudes tasuta Exceli õpetusi ja veebikoolitusi, mis aitavad üksikisikutel ja ettevõtetel oma potentsiaali täielikult ära kasutada.