Kuidas leida VBA abil alamjada (9 võimalust)

  • Jaga Seda
Hugh West

Kui otsite mõnda kõige lihtsamat viisi, kuidas VBA abil alamjada leida, siis olete õiges kohas. Pärast selle artikli läbimist saate leida alamjada positsiooni või eraldada andmeid selle alamjada abil või muuta alamjada formaati lihtsalt. Läheme artiklisse.

Lae alla töövihik

Näidis sisu

9 viisi, kuidas leida VBA abil alamjada

Siin on mul järgmine andmetabel, mille abil ma näitan, kuidas leida alamjada stringis VBA abil. Samuti püüan näidata, kuidas leida alamjada juhuslikus stringis.

Olen selle ülesande täitnud, kasutades Microsoft Excel 365 versiooni, võite kasutada mis tahes muud versiooni vastavalt oma mugavusele.

Meetod-1: Alamstringi leidmine stringis VBA abil

Kui soovite VBA abil leida oma soovitud alajaotust stringist, võite kasutada järgmist funktsiooni funktsioon InStr VBA koodis.

Step-01 :

➤Minge edasi Arendaja Tab>> Visual Basic Valik

Siis on Visual Basic toimetaja avaneb.

➤Sealt edasi Sisesta Tab>> Moodul Valik

Pärast seda on Moodul luuakse.

Step-02 :

➤ Kirjutage järgmine kood

 Sub FindFirst() Dim Pos As Integer Pos = InStr(1, "Ma arvan, et ma olen", "arvan") MsgBox Pos End Sub 

Siin, InStr(1, "Ma arvan, et ma olen", "arvan") tagastab stringi alamstringi positsiooni. 1 on lähtepositsioon, " Ma mõtlen, seega olen" on string, kust leiate soovitud alamstringi, ja "arvan" on alajaotus, mida soovite leida. See on vaikimisi suur- ja väiketähelepanu tundlik, nii et olge ettevaatlik, millises suuruses alajaotust soovite otsida.

➤Press F5

Tulemus :

Pärast seda saate järgmised andmed Sõnumikast mis sisaldab positsiooni "arvan" alajaotus.

Meetod-2: Suur- ja väiketähtede tundmatu alajaotuse leidmine stringis

Kui soovite VBA abil leida oma soovitud alajaotust stringist sõltumata juhtumist, siis järgige seda meetodit.

Step-01 :

➤Follow Step-01 aadressilt Meetod-1

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

Siin, vbTextCompare kasutatakse suur- ja väiketähendusteta alamsõnade leidmiseks.

➤Press F5

Tulemus :

Seejärel saate järgmise tulemuse Sõnumikast mis sisaldab positsiooni "arvan" alajaotus.

Saate teha sama, kasutades järgmist koodi.

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

Siin, Valik Võrdle tekst leiab suur- ja väiketähestiku tundmatu alajaotuse.

➤Press F5

Tulemus :

Pärast seda saate järgmised andmed Sõnumikast mis sisaldab positsiooni "arvan" alajaotus.

Meetod-3: InstrRev-funktsiooni kasutamine VBAs

Siinkohal näitan, kuidas leida alamjada stringi lõpust.

Step-01 :

➤Follow Step-01 aadressilt Meetod-1

 Sub FindFromEnd() MsgBox InStrRev("Ma arvan, et ma olen", "I") End Sub 

InStrRev leiab alamjada vasaku külje asemel paremalt poolt.

➤Press F5

Tulemus :

Seejärel saate järgmise tulemuse Sõnumikast mis sisaldab teise koha asukohta "I" alamjada paremalt poolt.

Meetod-4: Alamstringi asukoha leidmine stringis andmeväljas

Kui soovite leida erimärki "@" aastal E-posti identifikaator , siis järgige seda meetodit. Ma olen lisanud siia Positsioonisammas selleks otstarbeks.

Step-01 :

➤Follow Step-01 aadressilt Meetod-1

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

See loob funktsiooni nimega FindSubstring (võite kasutada mis tahes muud nime)

väärtus on lahtri viide, mis sisaldab stringi ja see on deklareeritud kui Range .

Step-02 :

➤ Valige väljund Lahter E5

➤Tüüp järgmine funktsioon (loodud VBA )

=FindSubstring(D5)

D5 on lahter, mis sisaldab stringi.

➤Press SISESTA

➤Drag down the Täitmise käepide Tööriistad

Tulemus :

Pärast seda saate erimärgi positsioonid. " @" aastal E-posti identifikaator .

Sarnased lugemised:

  • Kuidas leida string rakus, kasutades VBA-d Excelis (2 meetodit)
  • FindNext VBA kasutamine Excelis (2 näidet)
  • Kuidas leida string VBA-ga Excelis (8 näidet)
  • VBA Viimase rea leidmine Excelis (5 võimalust)

Meetod-5: Teatud alamstringi kontrollimine andmeribas olevas stringis

Oletame, et soovite kirjutada Pass või Ei vasta korrespondeeri õpilaste nimedele sõltuvalt Tulemuse veerg kus Pass või Fail on kirjutatud sulgudes. Et leida see alamsõna sisse Tulemuse veerg ja kirjutage see üles Passiivne või ebaõnnestunud veerg järgige seda meetodit.

Step-01 :

➤Follow Step-01 aadressilt Meetod-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 

Siin on lahtrite vahemik C5:C10 mis on Tulemuse veerg

InStr(cell.value, "Pass")> 0 on tingimus, mille puhul number on suurem kui null (kui lahter sisaldab "Pass" ), siis jätkub järgmine rida ja annab kõrvalolevasse lahtrisse väljundiks Läbitud .

Kui tingimus muutub vale tähendab, et lahter ei sisalda ühtegi "Pass" siis rida all Muidu käivitub ja annab väljundväärtuse kõrvalolevas lahtris kui Ebaõnnestunud .

See tsükkel jätkub iga lahtri puhul.

➤Press F5

Tulemus :

Seejärel saate järgmised väljundid väljundi Läbida või mitte veerus.

Meetod-6: Stringis oleva kindla alatähise kontrollimine ja andmete väljavõtmine

Ma näitan, kuidas leida õpilased nimega Michael aastal Õpilase nime veerg ja ekstraheerida nende vastavad andmed, kasutades VBA selles meetodis.

Step-01 :

➤Follow Step-01 aadressilt Meetod-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 

Siin olen kasutanud B100 kui Aktiivne lehtede vahemik kuid võite kasutada mis tahes vahemikku vastavalt oma kasutusalale.

InStr(1, Range("B" & i), "Michael")> 0 on tingimus, millega kontrollitakse, kas veerus olev lahter B sisaldab Michael

Range("E" & icount & ":G" & icount) on vahemik, kuhu soovite oma väljundandmeid ja Range("B" & i & ":D" & i).value annab väärtused veergudest B aadressile D .

➤Press F5

Tulemus :

Pärast seda saadakse järgmised andmed õpilaste kohta, kellel on nimi Michael .

Meetod-7: Sõna alajaotuse otsimine

Kui soovite leida alamliidet sõnana, siis järgige seda meetodit.

Step-01 :

➤Follow Step-01 aadressilt Meetod-1

 Sub Stringforword() Dim j As Integer j = InStr("Siin on see, mis ma olen", "on") If j = 0 Then MsgBox "Sõna ei leitud" Else MsgBox "Sõna leitud positsioonis: " & j End If End Sub 

See kontrollib, kas string sisaldab on ja seejärel antakse selle asukoht

➤Press F5

Tulemus :

Pärast seda kuvatakse järgmine sõnumikast, mis näitab, et sõna, mis on leitud positsioonis:6 (seisukoht on ).

Seda koodi saab testida sõna puhul, mida ei ole stringis.

➤Tüüpi järgmine kood

 Sub Stringforword() Dim j As Integer j = InStr("Siin on see, mis ma olen", "olen") If j = 0 Then MsgBox "Sõna ei leitud" Else MsgBox "Sõna leitud positsioonis: " & j End If End Sub 

➤Press F5

Tulemus :

Pärast seda kuvatakse järgmine sõnumikast, mis näitab, et sõna ei leitud .

Meetod-8: Instr ja LEFT funktsiooni kasutamine

Siinkohal selgitan, kuidas leida alamstringi positsioon stringis ja eraldada tekstid enne seda alamstringi, kasutades selleks VBA ja funktsioon LEFT .

Step-01 :

➤Follow Step-01 aadressilt Meetod-1

 Sub InstrandLeft() Dim txt As String Dim j As Long txt = "Siin on see, mis ma olen" j = InStr(txt, "on") MsgBox Left(txt, j - 1) End Sub 

j = InStr(txt, "is") on alamjada positsioon on ja Vasak(txt, j - 1) ekstraheerib allsõnu enne on .

➤Press F5

Tulemus :

Pärast seda kuvatakse järgmine sõnum, mis näitab, et Siin (alajaotus enne on ).

Meetod-9: Teatud alatähise fikseerimine stringis

Saate boldida klassid enne sulgudes olevad klassid Tulemuse veerg järgides seda meetodit.

Step-01 :

➤Follow Step-01 aadressilt Meetod-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, "(") tagastab esimese sulguri positsiooni ja Cell.Characters(1, txt - 1).Font.Bold teeb alajaotuse enne esimest sulgurit Bold .

Step-02 :

➤Valige Tulemuse veerg

➤Sealt edasi Arendaja Tab>> Makros Valik

Siis, a Makro ilmub nõustaja.

➤Select Boldingsubstring (VBA koodinimi) ja seejärel Käivita .

Tulemus :

Pärast seda on hinded Tulemus Veerg on rasvases kirjas.

Praktika sektsioon

Selleks, et ise harjutada, on meil olemas Praktika lõik nagu allpool lehel nimega Praktika Palun tehke seda ise.

Kokkuvõte

Selles artiklis püüdsin ma katta kõige lihtsamaid viise, kuidas leida alamjada kasutades VBA Excelis tõhusalt. Loodan, et see on teile kasulik. Kui teil on ettepanekuid või küsimusi, jagage neid meiega.

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.