Sisällysluettelo
Käyttöönotto VBA on tehokkain, nopein ja turvallisin tapa suorittaa mikä tahansa operaatio Excelissä. Tässä artikkelissa näytämme, miten tarkistetaan, sisältääkö merkkijono toisen merkkijonon Excelissä käyttämällä komentoa VBA .
Lataa käytäntömalli
Voit ladata ilmaisen Excel-mallin täältä.
VBA tarkistaa, jos merkkijono sisältää Value.xlsm
6 VBA-menetelmää, joilla tarkistetaan, sisältääkö merkkijono toisen merkkijonon Excelissä
Alla tässä osiossa on 6 tehokasta menetelmää, joilla voit toteuttaa seuraavat toimet VBA tarkistaa, sisältääkö merkkijono toisen merkkijonon vai ei.
1. VBA tarkistaa, sisältääkö merkkijono merkkijonon osajonon
Alla on esimerkki InStr-funktio löytääksesi, sisältääkö merkkijono osajonon Excelissä.
Vaiheet:
- 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 .
- Kopioi koodiikkunaan seuraava koodi ja liitä se.
Public Sub ContainSub() If InStr("Elokuva: Iron Man, Batman, Teräsmies, Hämähäkkimies, Thor", "Hulk")> 0 Then MsgBox "Elokuva löytyi" Else MsgBox "Elokuvaa ei löytynyt" End If End Sub
Koodisi on nyt valmis ajettavaksi.
- Suorita makro.
Jos merkkijono sisältää merkkijonon niin saat tuloksen match found, muuten se palauttaa no match found.
Esimerkissämme halusimme selvittää, onko ensisijainen merkkijonomme " Elokuva: Iron Man, Batman, Teräsmies, Hämähäkkimies, Thor " sisältää sanan " Hulk " tai ei. Koska näin ei ole, saamme tulokseksi Elokuvaa ei löydy tulos.
2. VBA tarkistaa, sisältääkö merkkijono numeron
Voit etsiä, sisältävätkö merkkijonot numeroita vai eivät, käyttämällä komentoa VBA koodi.
Katso seuraava esimerkki, jossa selvitetään, mitkä merkkijonot sisältävät numeroita elokuvan nimien kanssa.
Vaiheet, joilla tarkistetaan, sisältävätkö merkkijonot numeroita, joissa on merkkijonoarvot VBA on esitetty jäljempänä.
Vaiheet:
- Samalla tavalla kuin aiemmin, avaa Visual Basic Editor alkaen Kehittäjä välilehti ja Lisää a Moduuli koodiikkunassa.
- Kopioi koodiikkunaan seuraava koodi ja liitä se.
Function SearchNumbers(oRng As Range) As Boolean Dim bSearchNumbers As Boolean, i As Long bSearchNumbers = False For i = 1 To Len(oRng.Text) If IsNumeric(Mid(oRng.Text, i, 1)) Then bSearchNumbers = True Exit For End If Next SearchNumbers = bSearchNumbers End Function
- Tämä ei ole alamenettely, joka koskee VBA ohjelman suorittamiseen, tämä luo Käyttäjän määrittelemä toiminto (UDF), jota kutsumme laskentataulukossamme tehtävän suorittamiseksi. Koodin kirjoittamisen jälkeen emme siis enää klikkaa painiketta Suorita painiketta, napsauta Tallenna painiketta valikkoriviltä makrotiedoston tallentamiseksi.
- Mene nyt takaisin haluamallesi laskentataulukkoon ja kirjoita äsken luomasi käyttäjän määrittelemä funktio kenttään VBA koodi ( SearchNumber , koodin ensimmäisellä rivillä) ja syötetään funktion sulkujen sisään sen merkkijonon solun viitenumero, jossa on etunumeroita (esim. Solu B5 ).
- Paina Kirjoita .
Saat boolen arvon ( TRUE tai False ), jos solussa oleva merkkijono sisältää numeroita, saat tulokseksi TRUE , muuten FALSE .
- Vedä solua alaspäin Täyttökahva soveltaa kaavaa muihin soluihin ja tarkistaa, mikä merkkijono sisältää numeroita ja mikä ei.
3. VBA numeroiden poimiminen merkkijonosta
Edellä olevassa osassa opimme, miten tarkistetaan, sisältääkö merkkijono numeroita vai ei. Tässä osassa opimme, miten numerot voidaan poimia ja sijoittaa toiseen soluun alla olevan esimerkin avulla.
Vaiheet, joilla tarkistetaan, sisältävätkö merkkijonot numeroita, ja poimitaan ne komennolla VBA on esitetty jäljempänä.
Vaiheet:
- Avaa Visual Basic Editor alkaen Kehittäjä välilehti ja Lisää a UserForm tällä kertaa koodiikkunan Insert-välilehdeltä.
- Vuodesta ilmestyi Työkalupakki , vedä ja pudota CommandButton vuonna UserForm .
- Kaksoisnapsauta painiketta, kopioi seuraava koodi ja liitä se.
Private Sub CommandButton1_Click() Worksheets("Number").Range("C2:C15").ClearContents checkNumber (Worksheets("Number").Range("B2:B15")) End Sub Sub checkNumber(objRange As Range) Dim myAccessary As Variant Dim i As Long Dim iRow As Long iRow = 2 For Each myAccessary In objRange For i = 1 To Len(myAccessary.Value) If If IsNumeric(Mid(myAccessary.Value, i,1))) Then If Trim(objRange.Cells(objRange.Row - 1, 2))) "" Then objRange.Cells(iRow - 1, 2) = _ objRange.Cells(iRow - 1, 2) & Mid(myAccessary.Text, i, 1) Else objRange.Cells(iRow - 1, 2) = Mid(myAccessary.Text, i, 1) End If End If Next iRow = iRow + 1Seuraava myAccessary End Sub
- Suorita koodia, ja se vie sinut kiinnostavalle laskentataulukolle.
- Napsauta komentopainiketta ja saat merkkijonoista poimitun numeron.
4. VBA tarkistaa, jos merkkijono sisältää tietyn kirjaimen
Tämä menetelmä on melkein samanlainen kuin merkkijonon merkkijonon osajonon tarkistaminen.
Alla on InStr funktiolla voit etsiä, sisältääkö merkkijono tietyn kirjaimen Excelissä.
Vaiheet:
- 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 ContainChar() If InStr("Elokuva: Iron Man, Batman, Teräsmies, Hämähäkkimies, Thor", "Z")> 0 Then MsgBox "Kirjain löytyi" Else MsgBox "Kirjainta ei löytynyt" End If End Sub
Koodisi on nyt valmis ajettavaksi.
- Suorita ohjelmaan. Jos merkkijono sisältää kirjaimen niin saat tuloksen match found, muuten se palauttaa no match found.
Esimerkissämme halusimme selvittää, onko ensisijainen merkkijonomme " Elokuva: Iron Man, Batman, Teräsmies, Hämähäkkimies, Thor " sisältää kirjaimen " Z " tai ei. Koska näin ei ole, saamme tulokseksi Kirjettä ei löydy tulos.
5. VBA tarkistaa, sisältääkö merkkijonon alue toisen merkkijonon.
Olemme oppineet tarkistamaan, sisältääkö tietty merkkijono toisen merkkijonon vai ei. Tässä osassa opimme kuitenkin tarkistamaan, sisältääkö merkkijonojen alue alimerkkijonon vai ei, ja esimerkkinä on seuraava tietokokonaisuus.
Vaiheet:
- Avaa Visual Basic Editor alkaen Kehittäjä välilehti ja Lisää a Moduuli koodiikkunassa.
- Kopioi koodiikkunaan seuraava koodi ja liitä se.
Public Sub ContainsSub() If InStr(ActiveSheet.Select, "Hulk")> 0 Then MsgBox "Elokuva löytyi" Else MsgBox "Elokuvaa ei löytynyt" End If End Sub
Koodisi on nyt valmis ajettavaksi.
- Suorita koodi.
Jos alueesi merkkijono sisältää merkkijonon niin saat tuloksen match found, muuten se palauttaa no match found.
6. VBA merkkijonojen poimiminen merkkijonosta
Tässä jaksossa katsotaan, miten tarkistetaan, sisältävätkö merkkijonot tiettyjä alimerkkijonoja, ja poimitaan ne toiseen soluun.
Poimimme tiedot nimistä, jotka alkavat kirjaimella " Chris " seuraavasta tietokokonaisuudesta.
Askeleet :
- Avaa Visual Basic Editor alkaen Kehittäjä välilehti ja Lisää a Moduuli koodiikkunassa.
- Kopioi koodiikkunaan seuraava koodi ja liitä se.
Sub SearchSub() Dim lastrow As Long Dim i As Integer, count As Integer lastrow = ActiveSheet.Range("A30000").End(xlUp).Row For i = 1 To lastrow If InStr(1, LCase(Range("C" & i)), "Chris") 0 Then count = count + 1 Range("F" & count & ":H" & count) = Range("B" & i & ":D" & i).Value End If Next i End Sub
Koodisi on nyt valmis ajettavaksi.
- Suorita koodi.
Ainoastaan nimet, jotka alkavat " Chris " tallennetaan ennalta määritettyihin soluihin.