Miten löytää merkkijono VBA: lla Excelissä (8 esimerkkiä)

  • Jaa Tämä
Hugh West

Käyttöönotto VBA on tehokkain, nopein ja turvallisin tapa suorittaa mikä tahansa operaatio Excelissä. Tässä artikkelissa näytämme, miten tiettyjä merkkijonoja etsitään toisesta annetusta merkkijonosta käyttämällä komentoa VBA Excelissä.

Lataa käytäntömalli

Voit ladata ilmaisen Excel-mallin täältä.

VBA löytää String.xlsm:stä

InStr-funktio

Microsoft Excelissä on sisäänrakennettu toiminto nimeltä InStr-funktio löytää tiettyjen merkkijonojen sijainnin tietyssä merkkijonossa.

Yleinen syntaksi:

InStr([alku], merkkijono1, merkkijono2, [vertaa])

Tässä,

Argumentit Pakollinen/ Valinnainen Määritelmä
käynnistä Valinnainen Haun aloituspaikka.
  • Oletusarvoisesti InStr funktio laskee merkin sijainnin laskemalla 1:stä, ei aloituspaikasta. Voit siis jättää tämän tyhjäksi, jos haluat.
string1 Vaadittu Merkkijono, josta haetaan, Primary String.
string2 Vaadittu Merkkijono, jota etsitään ensisijaisesta merkkijonosta.
vertaa Valinnainen The InStr funktio on oletusarvoisesti case-sensitive. Mutta jos haluat suorittaa case-sensitive InStr , voit antaa tässä argumentin tietyn vertailun suorittamiseksi. Tämä argumentti voi olla seuraavia arvoja,
  • vbBinaryCompare -> suorittaa binäärivertailun, paluuarvo 0.
  • vbTextCompare -> suorittaa tekstivertailun, paluuarvo 1.
  • vbDatabaseCompare -> suorittaa tietokantavertailun, paluuarvo 2

Oletusarvoisesti, InStr ottaa vbBinaryCompare vertailuargumenttina.

8 Helppoja esimerkkejä tietyn merkkijonon sijainnin löytämiseksi annetusta merkkijonosta VBA:n avulla

Katsotaanpa muutamia yksinkertaisia esimerkkejä tiettyjen merkkijonojen sijainnin selvittämiseksi tietyssä merkkijonossa käyttämällä seuraavia ohjeita VBA .

1. VBA löytää tekstin sijainnin merkkijonossa

Alla on esimerkki InStr löytää tekstin sijainnin merkkijonossa.

  • Paina Alt + F11 näppäimistöllä tai siirry välilehdelle Kehittäjä -> Visual Basic avata Visual Basic Editor .

  • Valitse ponnahdusikkunan valikkoriviltä seuraava vaihtoehto Lisää -> Moduuli .

  • Kirjoita nyt koodiikkunaan yksinkertainen InStr ohjelman sisällä VBA-alamenettely (ks. jäljempänä).
 Sub INSTR_Example() MsgBox InStr("Onni on valinta", "valinta") End Sub 

Koodisi on nyt valmis ajettavaksi.

  • Paina F5 näppäimistöllä tai valitse valikkoriviltä Suorita -> Suorita Sub/UserForm . Voit myös vain klikata pieni Play-kuvake alivalikkopalkissa makron suorittamiseksi.

Näet, että ponnahdusikkunan viestiruutu antaa sinulle numero, joka ilmoittaa sijainnin tekstistä, jonka halusit tarkistaa.

Selitys:

Ensisijainen merkkijonomme, " Onnellisuus on valinta " on 21-kirjaiminen lause (välilyönteineen) ja halusimme löytää tekstin " valinta " tässä merkkijonossa. Teksti " valinta " alkoi ensisijaisen merkkijonon 16. kohdasta, joten saimme luvun 16 tulosteena viestiruudussa.

2. VBA tekstin etsimiseen tietystä kohdasta merkkijonossa

Selvitetään nyt, mitä tapahtuisi, jos haluaisimme saada sijainnin tietystä numerosta.

  • Samalla tavalla kuin aiemmin, avaa Visual Basic Editor alkaen Kehittäjä välilehti ja Lisää a Moduuli koodiikkunassa.
  • Kirjoita koodiikkunaan yksinkertainen InStr edellä esitettyä ohjelmaa ja anna start-argumentin arvo sen kohdan mukaan, josta alkaen haluat laskea tekstin.
 Sub INSTR_Example() MsgBox InStr(17, "Onni on valinta", "valinta") End Sub 

  • Seuraava, Suorita koodi.

Näet, että ponnahdusikkunan viestiruutu antaa sinulle numero, joka ilmoittaa sijainnin tekstistä lähteminen tietystä asennosta jonka halusit tarkistaa.

Selitys:

Koska tiesimme jo (vaiheen 1 keskustelusta), että teksti " valinta " aloitti asemasta 16 , joten lisäsimme kaksi " valinta " ensisijaisessa merkkijonossa ja aseta 17 1. parametrina ohittaaksemme ensimmäisen " valinta ". Joten, me Suorita edellä mainittu makro ja se näytti meille asemanumeron 27 joka on täsmälleen sen aseman numero, jossa toinen " valinta " annetussa merkkijonossa.

3. VBA tekstin etsimiseen merkkijonosta Case-insensitive InStr -funktiolla merkkijonossa

Käyttöönotosta alkaen InStr toimintoa, tiedät jo, että oletusarvoisesti InStr funktio on herkkä isoille ja pienille kirjaimille. Selvitetään se esimerkin avulla.

Katso seuraavat tiedot VBA koodi, jossa halusimme löytää sanan " Valinta ", jossa on iso "C" merkkijonossa " Onnellisuus on valinta ", jossa valinta kirjoitetaan kirjaimella pieni "c" .

  • Suorita koodi ja löytää 0 tuotokseksi.

Tämä johtuu siitä, että InStr toiminto käsittelee iso "C" ja pieni "c" Se etsi siis sanaa " Valinta " merkkijonossa, eikä saanut yhtään vastaavuutta, joten palautti 0 .

  • Tehdäksesi InStr toiminto case-insensitive , aseta compare-argumentin arvoksi vbTextCompare (ks. jäljempänä).
 Sub INSTR_Example() MsgBox InStr(1, "Onnellisuus on valinta ja valinta", "Valinta", vbTextCompare) End Sub 

  • Suorita koodi.

Saat tekstin sijainti merkkijonosta, onko teksti kirjoitettu muotoa isot tai pienet kirjaimet .

4. VBA tekstin etsimiseen merkkijonon oikealta puolelta

Tähän asti InStr funktio antoi meille vain merkkijonon vasemman puolen sijainnin. Mutta entä jos haluat löytää tekstin sijainnin merkkijonon oikealta puolelta.

InStrRev-funktio hakee oikealta. InStrRev funktio toimii hyvin samalla tavalla kuin InStr funktio ja se löytää sinulle tekstin sijainnin tekstin luettelosta oikea puoli merkkijonosta.

Katso seuraavat esimerkit eron ymmärtämiseksi.

  • Jos suoritamme seuraavan koodin InStr toiminto sitten,

se antaa meille sijainnin ( 16 ) ensimmäisen tekstin " valinta ".

  • Mutta jos suoritamme saman koodin InStrRev Toiminta sitten,

se antaa meille sijainnin ( 27 ) viimeisen tekstin " valinta ".

Samanlaisia lukemia:

  • FindNext VBA:n käyttäminen Excelissä (2 esimerkkiä)
  • Etsi ja korvaa VBA:n avulla (11 tapaa)
  • Etsi tarkka vastaavuus VBA:n avulla Excelissä (5 tapaa)

5. VBA löytää merkin sijainnin merkkijonossa

Voit myös etsiä tietyn merkin sijainnin merkkijonosta samalla tavalla kuin tekstin.

  • Kopioi seuraava koodi VBA koodiikkuna
 Sub Find_Character() Dim z As Long z = InStr("Onni on valinta", "e") MsgBox z End Sub 

  • Ja Suorita makro.

Ensimmäinen " e " on annetussa merkkijonossa numerossa 7 asema.

6. VBA merkkijonon merkkijonon osajonon etsimiseen

Tässä opettelemme, miten selvitetään, sisältääkö merkkijono merkin osajono tai ei.

Saadaksemme sen, meidän on suoritettava IF Statement koodissamme.

  • Samalla tavalla kuin ennenkin, avaa Visual Basic Editor alkaen Kehittäjä välilehti ja Lisää a Moduuli koodiikkunassa.
  • Kopioi koodiikkunaan seuraava koodi ja liitä se.
 Public Sub FindSub() If InStr("Onnellisuus on valinta", "valinta") = 0 Then MsgBox "Vastausta ei löytynyt" Else MsgBox "Vastausta löytyi" End If End Sub 

Koodisi on nyt valmis ajettavaksi.

  • Suorita makro.

Jos merkkijono sisältää merkkijonon niin saat ottelu löytyi , muuten se palauttaa no match found. Esimerkissämme halusimme selvittää, onko ensisijainen merkkijonomme " Onnellisuus on valinta " sisältää sanan " valinta " tai ei. Jos se on, saamme tulokseksi Ottelu löydetty tulos.

7. VBA merkkijonon etsimiseen solualueelta

Voit etsiä tiettyä tekstiä merkkijonon solualueelta ja palauttaa tietyn merkkijonon.

Katso seuraava esimerkki, jossa on " Dr. ", ja kun se vastaa, se palauttaa " Tohtori ".

  • Alla on koodi, jolla saat edellä kuvatun tuloksen,
 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 

  • Suorita koodi ja tulos näkyy alla

  • Voit muokata makroa tarpeidesi mukaan. Jos esimerkiksi haluat etsiä " Prof. " missä tahansa merkkijonon solussa, ja saa " Professori " paluuna, niin yksinkertaisesti välitä " Prof. " arvona " Tohtori ." makron 4. rivillä ja " Professori " eikä " Tohtori " makron viidennellä rivillä ja määritä solualueen numero vastaavasti.

8. VBA merkkijonon etsimiseen solusta

Voit myös etsiä tiettyä tekstiä yhdestä solusta merkkijono ja palauttaa tietyn merkkijonon.

  • Kopioi seuraava koodi ja liitä se koodiikkunaan.
 Sub Find_String_in_Cell() If InStr(Range("B5").Value, "Dr.")> 0 Then Range("C5").Value = "Doctor" End If End Sub 

Se etsii " Dr. " in Solu B5 ja jos se löytää vastaavuuden, se palauttaa " Tohtori " in Solu C5 .

  • Voit muokata makroa tarpeidesi mukaan. Jos esimerkiksi haluat etsiä " Prof. " missä tahansa merkkijonon solussa, ja saa " Professori " paluuna, niin yksinkertaisesti välitä " Prof. " arvona " Tohtori ." makron 2. rivillä ja " Professori " eikä " Tohtori " makron kolmannella rivillä ja määritä soluviitenumero vastaavasti.

Päätelmä

Tämä artikkeli osoitti, miten voit etsiä tiettyjä tekstejä Excelin merkkijonossa käyttämällä VBA-makro. Toivottavasti tästä artikkelista on ollut sinulle paljon hyötyä, ja voit kysyä vapaasti aiheeseen liittyviä kysymyksiä.

Hugh West on erittäin kokenut Excel-kouluttaja ja analyytikko, jolla on yli 10 vuoden kokemus alalta. Hän on koulutukseltaan laskentatoimen ja rahoituksen kandidaatti sekä kauppatieteiden maisteri. Hughilla on intohimo opettamiseen, ja hän on kehittänyt ainutlaatuisen opetusmenetelmän, jota on helppo seurata ja ymmärtää. Hänen asiantuntemuksensa Excelistä on auttanut tuhansia opiskelijoita ja ammattilaisia ​​maailmanlaajuisesti parantamaan taitojaan ja menestymään urallaan. Blogissaan Hugh jakaa tietämyksensä maailman kanssa tarjoamalla ilmaisia ​​Excel-opetusohjelmia ja verkkokoulutusta auttaakseen yksilöitä ja yrityksiä saavuttamaan täyden potentiaalinsa.