VBA, et kontrollida, kas string sisaldab teist stringi Excelis (6 meetodit)

  • Jaga Seda
Hugh West

Rakendamine VBA on kõige tõhusam, kiirem ja turvalisem meetod mis tahes toimingu sooritamiseks Excelis. Selles artiklis näitame teile, kuidas kontrollida, kas string sisaldab Excelis teist stringi, kasutades selleks VBA .

Lae alla praktika mall

Tasuta praktilise Exceli malli saate alla laadida siit.

VBA kontrollida, kas string sisaldab Value.xlsm

6 meetodit VBA-s, et kontrollida, kas string sisaldab teist stringi Excelis

Allpool selles jaotises leiate 6 tõhusat meetodit, kuidas rakendada VBA kontrollida, kas string sisaldab teist stringi või mitte.

1. VBA, et kontrollida, kas string sisaldab alajaotust

Allpool on toodud näide funktsioon InStr et leida, kas string sisaldab Excelis alajaotust.

Sammud:

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

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

  • Kopeerige koodiaknas järgmine kood ja kleepige see sisse.
 Public Sub ContainSub() If InStr("Film: Iron Man, Batman, Superman, Spiderman, Thor", "Hulk")> 0 Then MsgBox "Movie found" Else MsgBox "Movie not found" 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 ei leia vastet.

Meie näites tahtsime välja selgitada, kas meie esmane string " Film: Iron Man, Batman, Superman, Spiderman, Thor " sisaldab sõna " Hulk " või mitte. Kuna see ei ole, saame me Filmi ei leitud tulemus.

2. VBA, et kontrollida, kas string sisaldab numbrit

Saate otsida, kas stringid sisaldavad numbreid või mitte, kasutades funktsiooni VBA kood.

Vaadake järgmist näidet, kus me leiame, millised stringid sisaldavad numbreid koos filmi nimedega.

Sammud, et kontrollida, kas stringid sisaldavad numbreid koos VBA on esitatud allpool.

Sammud:

  • Samamoodi nagu varem, avatud Visual Basic toimetaja alates Arendaja vahekaart ja Sisesta a Moodul koodiaknas.
  • Kopeerige koodiaknas järgmine kood ja kleepige see sisse.
 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 
  • See ei ole allmenetlus VBA programmi käivitamiseks, see loob Kasutaja määratud funktsioon (UDF), mida me kutsume oma töölehel ülesande täitmiseks. Seega, pärast koodi kirjutamist, selle asemel, et klõpsata nupule Käivita nuppu, klõpsake nuppu Salvesta makrofaili salvestamiseks vajutage menüüriba nuppu.
  • Nüüd minge tagasi huvipakkuvale töölehele ja kirjutage äsja loodud kasutajamääratletud funktsioon sisse VBA kood ( SearchNumber , koodi esimeses reas) ja sisestage funktsiooni sulgudes selle stringi lahtri viitenumber, millel on juhtnumbrid (nt. Raku B5 ).
  • Press Sisesta .

Saate boole'i väärtuse ( TÕELINE või Vale ), kui lahtris olev string sisaldab numbreid, siis saadakse TÕELINE , muidu VALE .

  • Lohistage lahtrit allapoole Täitmise käepide rakendada valemit ülejäänud lahtritele, et kontrollida, milline string sisaldab numbreid ja milline mitte.

3. VBA numbrite väljavõtmine stringist

Ülaltoodud jaotises õpime, kuidas kontrollida, kas string sisaldab numbreid või mitte. Ja selles jaotises õpime, kuidas neid numbreid eraldada ja paigutada need teise lahtrisse allpool toodud näite abil.

Sammud, et kontrollida, kas stringid sisaldavad numbreid ja ekstraheerida need koos VBA on esitatud allpool.

Sammud:

  • Avatud Visual Basic toimetaja alates Arendaja vahekaart ja Sisesta a UserForm seekord koodiakna vahekaardilt Insert.
  • Alates ilmunud Tööriistakast , lohistage ja laske CommandButton aastal UserForm .

  • Topeltklõpsake nupule, kopeeri järgmine kood ja kleebi see sisse.
 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 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 + 1Järgmine myAccessary End Sub 
  • Käivita koodi ja see viib teid huvipakkuvale töölehele.
  • Klõpsake käsunuppu ja saate stringidest väljavõetud numbri.

4. VBA, et kontrollida, kas string sisaldab teatud tähte

See meetod on peaaegu sarnane meetodiga, millega kontrollitakse alamjada stringis.

Allpool on InStr funktsioon, et leida, kas string sisaldab Excelis teatud tähte.

Sammud:

  • 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 ContainChar() If InStr("Film: Iron Man, Batman, Superman, Spiderman, Thor", "Z")> 0 Then MsgBox "Letter found" Else MsgBox "Letter not found" End If End Sub 

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

  • Käivita programmi. Kui teie string sisaldab kirja siis saate vaste leitud, vastasel juhul ei leia vastet.

Meie näites tahtsime välja selgitada, kas meie esmane string " Film: Iron Man, Batman, Superman, Spiderman, Thor " sisaldab kirja " Z " või mitte. Kuna see ei ole, saame me Kirja ei leitud tulemus.

5. VBA kontrollimiseks, kas stringi vahemik sisaldab teist stringi

Me oleme õppinud, kuidas kontrollida, kas antud string sisaldab teist stringi või mitte. Kuid selles osas õpime, kuidas kontrollida, kas stringide vahemik sisaldab alamstringe või mitte, kasutades näitena järgmist andmestikku.

Sammud:

  • Avatud Visual Basic toimetaja alates Arendaja vahekaart ja Sisesta a Moodul koodiaknas.
  • Kopeerige koodiaknas järgmine kood ja kleepige see sisse.
 Public Sub ContainsSub() If InStr(ActiveSheet.Select, "Hulk")> 0 Then MsgBox "Movie found" Else MsgBox "Movie not found" End If End Sub 

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

  • Käivita kood.

Kui teie vahemik string sisaldab alamjada siis saate vaste leitud, vastasel juhul ei leia vastet.

6. VBA stringide väljavõtmiseks stringidest

Selles jaotises näeme, kuidas kontrollida, kas stringid sisaldavad teatavaid alamsõnu, ja neid teise lahtrisse välja võtta.

Ekstraheerime teabe nimedest, mis algavad sõnaga " Chris " järgmisest andmekogumist.

Sammud :

  • Avatud Visual Basic toimetaja alates Arendaja vahekaart ja Sisesta a Moodul koodiaknas.
  • Kopeerige koodiaknas järgmine kood ja kleepige see sisse.
 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 & count & ":H" & count) = Range("B" & i & ":D" & i).Value End If Next i End Sub 

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

  • Käivita kood.

Ainult nimed, mis algavad sõnaga " Chris " salvestatakse etteantud lahtritesse.

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.