Sisukord
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 sisu9 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.