Sisällysluettelo
Yksi tärkeimmistä ja laajimmin käytetyistä toiminnoista, joita käytämme ohjelmassa Visual Basic -sovellus (VBA) on Find-toiminto. Tässä artikkelissa näytän, miten voit käyttää Find-toimintoa. FIND-toiminto Excelin käyttöä asianmukaisten esimerkkien ja kuvien avulla.
Lataa harjoituskirja
Etsi toiminto VBA:ssa Excel.xlsm:ssä Excel.xlsm:ssä6 nopeaa esimerkkiä FIND-funktion käytöstä VBA:ssa
Tässä meillä on datajoukko, jossa on merkintä Kirjan nimet, Kirjailijat ja Hinnat Martin Bookstore -nimisen kirjakaupan kirjoista.
Tänään tavoitteenamme on tarkastella erilaisia käyttötapoja, joita voidaan käyttää Etsi toiminto of VBA tästä aineistosta.
1. Käytä Etsi-toimintoa VBA:ssa ilman parametria.
Voit käyttää Etsi toiminto of VBA ilman parametreja.
Sitten se etsii tiettyä arvoa solujen alueelta ja palauttaa ensimmäisen löytämänsä osuman.
Etsitään nimi "P. B. Shelly" sarakkeessa Kirjoittaja ( C4:C13 ).
Rivi, jossa on Etsi toiminto on:
Set cell = Range("C4:C17").Find("P. B. Shelly")
Täydellinen VBA-koodi on:
⧭ VBA-koodi:
Sub Find() Set cell = Range("C4:C17").Find("P. B. Shelly") MsgBox cell.Address End Sub
⧭ Lähtö:
Se tuottaa Makro nimeltään Etsi . Jos suoritat makron, se palauttaa seuraavat tiedot $C$6 , ensimmäisen solun osoite, jossa on nimi P. B. Shelly .
Lue lisää: Etsi alueelta VBA:lla Excelissä: mukaan lukien tarkat ja osittaiset vastaavuudet
2. Sovelletaan Etsi-toimintoa VBA:ssa After-parametrilla (aloitetaan haku tietystä solusta).
Voit käyttää Jälkeen parametrin kanssa Etsi toiminto osoitteessa VBA . Sitten se alkaa etsiä arvoa solun alapuolelta alueelta.
Aloitetaan esimerkiksi etsiminen nimellä "P. B. Shelly" solun alapuolelta C6 .
Koodirivi on:
Set cell = Range("C4:C13").Find("P. B. Shelly", After:=Range("C6"))
Ja täydellinen VBA-koodi on:
⧭ VBA-koodi:
Sub Find() Set cell = Range("C4:C13").Find("P. B. Shelly", After:=Range("C6")) MsgBox cell.Address End Sub
⧭ Lähtö:
Se palauttaa $C$13 koska se aloittaa etsinnän solun alapuolelta C6 , se on solusta C7 . Joten se saa P. B. Shelly solussa C13 ensiksi.
Lue lisää: Kuinka löytää merkkijono solussa käyttämällä VBA: ta Excelissä
3. Suorita Find-funktio VBA:ssa kietomalla After-parametrin ympärille (arvon etsiminen ympyränmuotoisesti)
The Jälkeen parametrin kanssa Etsi toiminto etsii arvoa ympyränmuotoisesti
Toisin sanoen se aloittaa haun alueen solun alapuolelta, lopettaa haun alueella ja aloittaa sitten uudelleen alueen yläreunasta.
Aloitetaan esimerkiksi haku nimellä "John Keats" solun alapuolelta C8 käyttämällä Jälkeen parametri.
Koodirivi on:
Set cell = Range("C4:C13").Find("John Keats", After:=Range("C8"))
Ja täydellinen VBA-koodi on:
⧭ VBA-koodi:
Sub Find() Set cell = Range("C4:C13").Find("John Keats", After:=Range("C8")) MsgBox cell.Address End Sub
⧭ Lähtö:
Se palauttaa $C$7 koska se aloittaa etsinnän solun alapuolelta C8 , se on solusta C9 .
Se ei löydä mitään soluun asti C13 , joten se alkaa jälleen solusta C4 ja löytää yhden solusta C7 .
Samanlaisia lukemia:
- Miten löytää merkkijono VBA: lla Excelissä (8 esimerkkiä)
- Etsi tarkka vastaavuus VBA:n avulla Excelissä (5 tapaa)
- Etsi ja korvaa VBA:n avulla (11 tapaa)
4. Hyödynnä VBA:n Etsi-toimintoa LookAt-parametrin kanssa (tarkkaa tai osittaista vastaavuutta varten).
Voit käyttää Etsi toiminto osoitteessa VBA kanssa LookAt parametri.
Käytä LookAt = xlWhole varten Tarkka ottelu, ja LookAt=xlPart a Osittain ottelu.
Yritetään esimerkiksi selvittää, onko olemassa kirjaa nimeltä "Oodi" vuonna Kirjan nimi sarake ( B4:B13 ).
Jos käytämme xlKoko koodirivillä:
Set cell = Range("B4:B13").Find("Ode", LookAt:=xlWhole)
Tuloste näyttää virheen, koska se ei löydä mitään tarkka ottelu.
Mutta jos käytät:
Set cell = Range("B4:B13").Find("Ode", LookAt:=xlPart)
Sitten se palaa $B$9 , koska on olemassa kirja, jonka nimi on "Oodi" siinä solussa B7 , Oodi yölaululle.
Joten koko koodi osittainen ottelu on:
⧭ VBA-koodi:
Sub Find() Set cell = Range("B4:B13").Find("Ode", LookAt:=xlPart) MsgBox cell.Address End Sub
5. Etsi-toiminnon käyttäminen VBA:ssa SearchDirection-parametrin avulla (haun suunnan määrittäminen)
Voit myös käyttää Etsi toiminto osoitteessa VBA kanssa SearchDirection parametri.
Käytä SearchDirection = xlNext hakua varten Ylhäältä alas .
Ja SearchDirection = xlPrevious hakua varten Alhaalta ylös .
Yritetään esimerkiksi löytää tekijä Author Elif Shafak sarakkeessa Kirjoittaja ( C4:C13 ).
Jos käytämme xlNext koodirivillä:
Set cell = Range("C4:C13").Find("Elif Shafak", SearchDirection:=xlNext)
Sitten se palauttaa $C$5 .
Mutta jos käytät:
Set cell = Range("C4:C13").Find("Elif Shafak", SearchDirection:=xlPrevious)
Sitten se palaa $C$11 .
Joten koko koodi hakua varten osoitteesta alhaalta ylöspäin on:
⧭ VBA-koodi:
Sub Find() Set cell = Range("C4:C13").Find("Elif Shafak", SearchDirection:=xlPrevious) MsgBox cell.Address End Sub
6. Etsi-toiminto VBA:ssa MatchCase-parametrin kanssa (isokirjaintarkka tai epäkohtainen vastaavuus)
Lopuksi voit käyttää Etsi toiminto kanssa MatchCase parametri.
Käytä MatchCase = True a case-sensitive ottelu , ja MatchCase=False a case-insensitive ottelu.
Yritetään esimerkiksi etsiä kirjaa nimeltä "äiti" vuonna Kirjan nimi sarake ( B4:B13 ).
Jos käytämme koodirivillä True:
Set cell = Range("B4:B13").Find("äiti", MatchCase:=True)
Tulosteessa näkyy virhe, koska se ei löydä yhtään vastaavuutta.
Mutta jos käytät:
Set cell = Range("B4:B13").Find("äiti", MatchCase:=False)
Sitten se palaa $B$9 koska on olemassa kirja nimeltä "Äiti" solussa B8 .
Joten koko koodi case-insensitive ottelu on:
⧭ VBA-koodi:
Sub Find() Set cell = Range("B4:B13").Find("Äiti", MatchCase:=False) MsgBox cell.Address End Sub
Päätelmä
Näiden menetelmien avulla voit käyttää Etsi-toimintoa Visual Basic -sovelluksessa. Onko sinulla kysyttävää? Kysy meiltä rohkeasti.