Miten löytää merkkijonon osa käyttämällä VBA (9 tapaa)

  • Jaa Tämä
Hugh West

Jos etsit joitakin helpoimpia tapoja löytää merkkijono VBA:n avulla, olet oikeassa paikassa. Kun olet käynyt läpi tämän artikkelin, voit löytää merkkijonon sijainnin tai poimia tietoja tämän merkkijonon avulla tai muuttaa merkkijonon muotoa helposti. Mennään artikkeliin.

Lataa työkirja

Näytteen sisältö

9 tapaa löytää merkkijono VBA:n avulla

Tässä minulla on seuraava datataulukko, jonka avulla näytän, miten merkkijonon osajono voidaan löytää VBA:n avulla. Yritän myös näyttää, miten osajono voidaan löytää satunnaisesta merkkijonosta.

Olen suorittanut tämän tehtävän käyttämällä Microsoft Excel 365 versiota, voit käyttää mitä tahansa muuta versiota haluamasi mukaan.

Menetelmä-1: Osajonon etsiminen merkkijonosta VBA:n avulla

Jos haluat etsiä haluamasi merkkijonon osajonon VBA:lla, voit käyttää seuraavaa tapaa InStr-funktio VBA-koodissa.

Step-01 :

➤Go to Kehittäjä Tab>> Visual Basic Vaihtoehto

Sitten Visual Basic Editor avautuu.

➤Go to Lisää Tab>> Moduuli Vaihtoehto

Sen jälkeen Moduuli luodaan.

Step-02 :

➤ Kirjoita seuraava koodi

 Sub FindFirst() Dim Pos As Integer Pos = InStr(1, "Luulen, siis olen", "luulen") MsgBox Pos End Sub 

Täällä, InStr(1, "Ajattelen, siis olen", "ajattelen") palauttaa merkkijonon osajonon sijainnin. 1 on alkuasento, " Ajattelen, siis olen" on merkkijono, josta löydät haluamasi osajonon, ja "ajattele" on osajono, jonka haluat löytää. Se on oletusarvoisesti isojen ja pienten kirjainten erotteleva, joten ole tarkkana etsittävän osajonon isojen ja pienten kirjainten välillä.

➤Press F5

Tulos :

Tämän jälkeen saat seuraavat tiedot Viestilaatikko joka sisältää "ajattele" osajono.

Menetelmä-2: Isokirjainherkän merkkijonon osajonon löytäminen merkkijonosta

Jos haluat löytää haluamasi merkkijonon osajonon tapauksesta riippumatta VBA:n avulla, noudata tätä menetelmää.

Step-01 :

➤Follow Step-01 of Menetelmä-1

 Public Sub caseinsensitive() Dim Pos As Integer Pos = InStr(1, "I Think Therefore I Am", "think",vbTextCompare) MsgBox Pos End Sub 

Tässä, vbTextCompare käytetään etsimään isojen ja pienten kirjainten erottelematonta merkkijonoa.

➤Press F5

Tulos :

Tämän jälkeen saat seuraavat tiedot Viestilaatikko joka sisältää "ajattele" osajono.

Voit tehdä saman käyttämällä seuraavaa koodia.

 Vaihtoehto Vertaa tekstiä Public Sub caseinsensitive() Dim Pos As Integer Pos = InStr(1, "Ajattelen siis olen", "ajattelen") MsgBox Pos End Sub 

Täällä, Vaihtoehto Vertaa tekstiä löytää case-insensitive osajonon.

➤Press F5

Tulos :

Sen jälkeen saat seuraavat tiedot Viestilaatikko joka sisältää "ajattele" osajono.

Menetelmä-3: InstrRev-funktion käyttäminen VBA:ssa

Tässä näytän, miten merkkijonon loppupäästä löydetään osajono.

Step-01 :

➤Follow Step-01 of Menetelmä-1

 Sub FindFromEnd() MsgBox InStrRev("Ajattelen siis olen", "minä") End Sub 

InStrRev etsii osajonon oikealta puolelta vasemman puolen sijasta.

➤Press F5

Tulos :

Tämän jälkeen saat seuraavat tiedot Viestilaatikko joka sisältää toisen "I" osajono oikealta puolelta.

Menetelmä-4: Osajonon sijainnin etsiminen merkkijonossa tietyssä tietueessa.

Jos haluat löytää erikoismerkin "@" vuonna Sähköpostiosoite Olen lisännyt tähän menetelmän. Sijaintisarake tätä tarkoitusta varten.

Step-01 :

➤Follow Step-01 of Menetelmä-1

 Function FindSubstring(value As Range) As Integer Dim Pos As Integer Pos = InStr(1, value, "@") FindSubstring = Pos End Function 

Se luo funktion nimeltä FindSubstring (voit käyttää mitä tahansa muuta nimeä)

arvo on soluviite, joka sisältää merkkijonon, ja se ilmoitetaan muodossa Valikoima .

Step-02 :

➤Valitse lähtö Solu E5

➤Type seuraava funktio (luonut VBA )

=FindSubstring(D5)

D5 on solu, joka sisältää merkkijonon.

➤Press ENTER

➤Drag down the Täyttökahva Työkalu

Tulos :

Sen jälkeen saat erikoismerkin sijainnit... " @" vuonna Sähköpostiosoite .

Samanlaisia lukemia:

  • Miten löytää merkkijono solussa käyttämällä VBA: ta Excelissä (2 menetelmää)
  • FindNext VBA:n käyttäminen Excelissä (2 esimerkkiä)
  • Miten löytää merkkijono VBA: lla Excelissä (8 esimerkkiä)
  • VBA Etsi viimeinen rivi Excelissä (5 tapaa)

Menetelmä-5: Tietyn merkkijonon merkkijonon tietyn osajonon tarkistaminen tietyssä tietovälissä

Oletetaan, että haluat kirjoittaa Pass tai Eivät vastaa opiskelijoiden nimiin riippuen Tulossarake jossa Pass tai Fail on kirjoitettu hakasulkeisiin. Tämän osajonon löytämiseksi tiedostosta Tulossarake ja kirjoita se ylös Hyväksytty tai hylätty sarake noudata tätä menetelmää.

Step-01 :

➤Follow Step-01 of Menetelmä-1

 Sub CheckSubstring() Dim cell As Range For Each cell In Range("C5:C10") If InStr(cell.value, "Pass")> 0 Then cell.Offset(0, 1).value = "Passed" Else cell.Offset(0, 1).value = "Failed" End If Next cell End Sub 

Tässä solualue on C5:C10 joka on Tulossarake

InStr(cell.value, "Pass")> 0 on ehto, jossa luku on suurempi kuin nolla (kun solussa on "Pass" ), niin seuraava rivi jatkuu ja antaa viereiseen soluun tulosteen muodossa Hyväksytty .

Jos ehto muuttuu vääräksi tarkoittaa, että solu ei sisällä mitään "Pass" sitten rivin alla oleva rivi Else suoritetaan ja antaa viereisen solun lähtöarvon muodossa Epäonnistunut .

Tämä silmukka jatkuu jokaisen solun kohdalla.

➤Press F5

Tulos :

Tämän jälkeen saat seuraavat tulosteet komentosarjassa Hyväksytty tai hylätty sarake.

Menetelmä-6: Tietyn merkkijonon osajonon tarkistaminen ja tietojen poimiminen

Näytän, miten löydämme nimetyt oppilaat. Michael vuonna Opiskelijan nimi -sarake ja poimia niitä vastaavat tiedot käyttämällä VBA tässä menetelmässä.

Step-01 :

➤Follow Step-01 of Menetelmä-1

 Sub Extractdata() Dim lastusedrow As Long Dim i As Integer, icount As Integer lastusedrow = ActiveSheet.Range("B100").End(xlUp).Row For i = 1 To lastusedrow If InStr(1, Range("B" & i), "Michael")> 0 Then icount = icount + 1 Range("E" & icount & ":G" & icount) = Range("B" & i & ":D" & i).value End If Next i End Sub 

Tässä olen käyttänyt B100 kuten Aktiivinen arkkialue mutta voit käyttää mitä tahansa aluetta käyttötarkoituksesi mukaan.

InStr(1, Range("B" & i), "Michael")> 0 on ehto, jolla tarkistetaan, onko sarakkeen solu B sisältää Michael

Range("E" & icount & ":G" & icount) on alue, jolle haluat tulostiedot ja Range("B" & i & ":D" & i).value antaa arvot sarakkeista B osoitteeseen D .

➤Press F5

Tulos :

Tämän jälkeen saat seuraavat tiedot oppilaista, joiden nimi on seuraava. Michael .

Menetelmä-7: Sanan merkkijonon etsiminen

Jos haluat löytää osajonon sanana, noudata tätä menetelmää.

Step-01 :

➤Follow Step-01 of Menetelmä-1

 Sub Stringforword() Dim j As Integer j = InStr("Tässä olen", "on") If j = 0 Then MsgBox "Sanaa ei löytynyt" Else MsgBox "Sana löytyi paikasta: " & j End If End Sub 

Se tarkistaa, sisältääkö merkkijono on ja sen jälkeen sen sijainti annetaan

➤Press F5

Tulos :

Tämän jälkeen saat seuraavan viestiruudun, jossa näkyy seuraavat tiedot sana löytyy kanta:6 (asema on ).

Voit testata tätä koodia sanalle, joka ei ole merkkijonossa.

➤Tyyppi seuraava koodi

 Sub Stringforword() Dim j As Integer j = InStr("Tässä olen", "ovat") If j = 0 Then MsgBox "Sanaa ei löytynyt" Else MsgBox "Sana löytyi paikasta: " & j End If End Sub 

➤Press F5

Tulos :

Tämän jälkeen saat seuraavan viestiruudun, jossa näkyy seuraavat tiedot sanaa ei löydy .

Menetelmä-8: Instr- ja LEFT-funktion käyttö

Tässä selitän, miten löydetään merkkijonon osajonon sijainti ja poimitaan tätä osajonoa edeltävät tekstit käyttämällä apuna VBA ja LEFT-toiminto .

Step-01 :

➤Follow Step-01 of Menetelmä-1

 Sub InstrandLeft() Dim txt As String Dim j As Long txt = "Tässä olen" j = InStr(txt, "on") MsgBox Left(txt, j - 1) End Sub 

j = InStr(txt, "on") on osajonon sijainti on ja Vasen(txt, j - 1) poimii osajonot ennen on .

➤Press F5

Tulos :

Tämän jälkeen saat seuraavan viestiruudun, jossa näkyy seuraava teksti Tässä (osajono ennen on ).

Menetelmä-9: Tietyn merkkijonon osajonon lihavointi

Voit lihavoida arvosanat ennen sulkuja kohdassa Tulossarake noudattamalla tätä menetelmää.

Step-01 :

➤Follow Step-01 of Menetelmä-1

 Sub Boldingsubstring() Dim Cell As Range Dim txt As Integer For Each Cell In Selection txtCount = Len(Cell) txt = InStr(1, Cell, "(") Cell.Characters(1, txt - 1).Font.Bold = True Next Cell End Sub 

txt = InStr(1, Cell, "(")) palauttaa ensimmäisen hakasulkeen sijainnin ja Cell.Characters(1, txt - 1).Font.Bold tekee merkkijonon ennen ensimmäistä hakasulkeista alkavasta merkkijonosta Rohkea .

Step-02 :

➤Valitse Tulossarake

➤Go to Kehittäjä Tab>> Makrot Vaihtoehto

Sitten a Makro Ohjattu toiminto tulee näkyviin.

➤Select Boldingsubstring (VBA-koodinimi) ja sitten Suorita .

Tulos :

Tämän jälkeen arvosanat Tulos Pylväs lihavoidaan.

Harjoitusosio

Jotta voit harjoitella itse, olemme toimittaneet Harjoitus osiossa alla olevan kaltaisesti arkissa nimeltä Harjoitus Tee se itse.

Päätelmä

Tässä artikkelissa yritin käsitellä helpoimpia tapoja löytää merkkijonon osa käyttämällä apuna VBA Excelissä tehokkaasti. Toivottavasti se on sinulle hyödyllinen. Jos sinulla on ehdotuksia tai kysymyksiä, voit jakaa ne kanssamme.

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.