Kako poiskati podrejeni niz z uporabo VBA (9 načinov)

  • Deliti To
Hugh West

Če iščete nekaj najlažjih načinov za iskanje podreza z uporabo VBA, potem ste na pravem mestu. Po prebiranju tega članka boste lahko zlahka našli položaj podreza ali izvlekli podatke z uporabo tega podreza ali spremenili obliko podreza. Pojdimo v članek.

Prenos delovnega zvezka

Vzorec vsebine

9 načinov iskanja podreza z uporabo VBA

Tukaj imam naslednjo podatkovno tabelo, s katero bom prikazal načine iskanja podreza v nizu z uporabo VBA. Poskušal bom prikazati tudi načine iskanja podreza v naključnem nizu.

To nalogo sem opravil z uporabo Microsoft Excel 365 različico, lahko pa uporabite katero koli drugo različico, ki vam ustreza.

Metoda-1: Iskanje podreza v nizu z uporabo VBA

Če želite v nizu poiskati želeni podrejeni niz z uporabo VBA, lahko uporabite funkcija InStr v kodi VBA.

Korak-01 :

➤Idi na Razvijalec Tab>> Visual Basic Možnost

Nato Urejevalnik Visual Basic se bo odprlo.

➤Najdi na Vstavite Tab>> Modul Možnost

Po tem je treba Modul bo ustvarjen.

Korak-02 :

➤Napišite naslednjo kodo

 Sub FindFirst() Dim Pos As Integer Pos = InStr(1, "I think therefore I am", "think") MsgBox Pos End Sub 

Tukaj, InStr(1, "Mislim, torej sem", "mislim") vrne položaj podreza v nizu. 1 je začetni položaj, " Mislim, torej sem." je niz, v katerem boste našli želeni podreženj, in "razmišljati" je podreza, ki jo želite poiskati. Privzeto je občutljiv na velikost črk, zato bodite pozorni na velikost črk podreze, ki jo želite poiskati.

➤Press F5

Rezultat :

Po tem se prikaže naslednje. Polje za sporočila ki vsebuje položaj "razmišljati" podreza.

Metoda-2: Iskanje za velikost črk neobčutljivega podstringa v nizu

Če želite z uporabo VBA poiskati želeno podredje v nizu ne glede na velikost, uporabite to metodo.

Korak-01 :

➤Sledovati Korak-01 na spletnem mestu Metoda-1

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

Tukaj, vbTextCompare se uporablja za iskanje podreza, ki je občutljiv na velikost črk.

➤Press F5

Rezultat :

Nato boste dobili naslednje Polje za sporočila ki vsebuje položaj "razmišljati" podreza.

Enako lahko storite z naslednjo kodo.

 Možnost Primerjaj besedilo Public Sub caseinsensitive() Dim Pos As Integer Pos = InStr(1, "I Think Therefore I Am", "think") MsgBox Pos End Sub 

Tukaj, Možnost Primerjava besedila bo našel podreza, ki je občutljiv na velikost črk.

➤Press F5

Rezultat :

Nato boste dobili naslednje Polje za sporočila ki vsebuje položaj "razmišljati" podreza.

Metoda-3: Uporaba funkcije InstrRev v VBA

Tukaj bom prikazal način iskanja podreza s konca niza.

Korak-01 :

➤Sledovati Korak-01 na spletnem mestu . Metoda-1

 Sub FindFromEnd() MsgBox InStrRev("Mislim, torej sem", "I") End Sub 

InStrRev poišče podrejeni niz z desne strani namesto z leve.

➤Press F5

Rezultat :

Nato boste dobili naslednje Polje za sporočila ki vsebuje položaj drugega "I" podreza z desne strani.

Metoda-4: Iskanje položaja podreza v nizu v območju podatkov

Če želite poiskati posebni znak "@" v Id e-pošte potem sledite tej metodi. Tu sem dodal Stolpec položaja v ta namen.

Korak-01 :

➤Sledovati Korak-01 na spletnem mestu Metoda-1

 Funkcija FindSubstring(vrednost kot območje) kot celoštevilsko število Dim Pos kot celoštevilsko število Pos = InStr(1, vrednost, "@") FindSubstring = Pos End Function 

Ustvaril bo funkcijo z imenom FindSubstring (lahko uporabite katero koli drugo ime)

vrednost je referenca na celico, ki vsebuje niz, in je deklarirana kot Razpon .

Korak-02 :

➤Izberite izhod Celica E5

➤Type naslednjo funkcijo (ki jo je ustvaril VBA )

=Izvedi podrejeno besedilo(D5)

D5 je celica, ki vsebuje niz.

➤Press VSTOP

➤Potegnite navzdol Ročaj za polnjenje Orodje

Rezultat :

Nato boste dobili položaje posebnega znaka " @" v Id e-pošte .

Podobna branja:

  • Kako poiskati niz v celici z uporabo VBA v Excelu (2 metodi)
  • Iskanje naslednjega z uporabo VBA v Excelu (2 primera)
  • Kako najti niz z VBA v Excelu (8 primerov)
  • VBA Poiščite zadnjo vrstico v Excelu (5 načinov)

Metoda-5: Preverjanje določenega podstira v nizu v območju podatkov

Recimo, da želite napisati Prehod ali Neuspešno dopisovanje k imenom učencev glede na Stolpec z rezultati kjer je Prehod ali Fail je zapisan v oklepaju. Če želite najti ta podreženj v Stolpec z rezultati in ga zapišite v Stolpec Pass ali Fail uporabite to metodo.

Korak-01 :

➤Sledovati Korak-01 na spletnem mestu Metoda-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 

V tem primeru je območje celic C5:C10 ki je Stolpec z rezultati

InStr(cell.value, "Pass")> 0 je pogoj, v katerem je število večje od nič (kadar celica vsebuje "Pass" ), potem se bo naslednja vrstica nadaljevala in v sosednji celici prikazala rezultat kot Sprejeto .

Če pogoj postane napačen, pomeni, da celica ne vsebuje nobenega "Pass" nato vrstico pod Drugače se izvede in v sosednji celici poda izhodno vrednost kot Neuspešno .

Ta zanka se nadaljuje za vsako celico.

➤Press F5

Rezultat :

Nato boste v oknu Sprejeti ali zavrniti stolpec.

Metoda-6: Preverjanje določenega podreza v nizu in izločanje podatkov

Pokazal bom, kako najti učence z imenom Michael v Stolpec z imenom učenca in izluščite ustrezne podatke z uporabo VBA pri tej metodi.

Korak-01 :

➤Sledovati Korak-01 na spletnem mestu Metoda-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 

Tu sem uporabil B100 kot Razpon aktivnega lista vendar lahko uporabite poljubno območje glede na svojo uporabo.

InStr(1, Range("B" & i), "Michael")> 0 je pogoj za preverjanje, ali je celica v stolpcu B vsebuje Michael

Razpon("E" & icount & ":G" & icount) je območje, v katerem želite imeti izhodne podatke, in Razpon("B" & i & ":D" & i).value bodo podane vrednosti iz stolpcev B na . D .

➤Press F5

Rezultat :

Nato boste za učence z imenom dobili naslednje izpisane podatke Michael .

Metoda-7: Iskanje podreza za besedo

Če želite poiskati podrejeni niz kot besedo, uporabite to metodo.

Korak-01 :

➤Sledovati Korak-01 na spletnem mestu Metoda-1

 Sub Stringforword() Dim j As Integer j = InStr("Tukaj je, kaj sem", "je") If j = 0 Then MsgBox "Beseda ni najdena" Else MsgBox "Beseda najdena na položaju: " & j End If End Sub 

Preveri, ali niz vsebuje je . in nato bo njegov položaj podan

➤Press F5

Rezultat :

Nato se bo prikazalo naslednje okno s sporočilom, ki prikazuje beseda najdemo v položaju: 6 (položaj je . ).

To kodo lahko preizkusite za besedo, ki je ni v nizu.

➤Vtipkajte naslednjo kodo

 Sub Stringforword() Dim j As Integer j = InStr("Tukaj sem", "sem") If j = 0 Then MsgBox "Beseda ni najdena" Else MsgBox "Beseda najdena v položaju: " & j End If End Sub 

➤Press F5

Rezultat :

Nato se bo prikazalo naslednje okno s sporočilom, ki prikazuje beseda ni bila najdena .

Metoda-8: Uporaba funkcij Instr in LEFT

Tukaj bom razložil način iskanja položaja podreza v nizu in izločanja besedil pred tem podrezem z uporabo VBA in . funkcija LEVA .

Korak-01 :

➤Sledovati Korak-01 na spletnem mestu Metoda-1

 Sub InstrandLeft() Dim txt As String Dim j As Long txt = "Tukaj sem" j = InStr(txt, "je") MsgBox Left(txt, j - 1) End Sub 

j = InStr(txt, "je") je položaj podreza je . in . Levo(txt, j - 1) bo izločil podrejene nize pred je . .

➤Press F5

Rezultat :

Nato se prikaže naslednje okno s sporočilom, ki prikazuje Tukaj (podrejeni niz pred je . ).

Metoda-9: Krepko označevanje določenega podreza v nizu

Ocene pred oklepaji v oklepaju lahko krepko označite v Stolpec z rezultati po tej metodi.

Korak-01 :

➤Sledovati Korak-01 na spletnem mestu Metoda-1

 Sub Boldingsubstring() Dim Cell As Range Dim txt As Integer Za vsako celico v izboru txtCount = Len(Cell) txt = InStr(1, Cell, "(") Cell.Characters(1, txt - 1).Font.Bold = True Next Cell End Sub 

txt = InStr(1, celica, "(") vrne položaj prvega oklepaja in Cell.Characters(1, txt - 1).Font.Bold bo podrejeni niz pred prvim oklepajem Krepko .

Korak-02 :

➤Izberite Stolpec z rezultati

➤Najdi na Razvijalec Tab>> Makroji Možnost

Nato a Makro Prikaže se čarovnik.

➤Izberite krepki podredni niz (kodno ime VBA) in nato Spustite .

Rezultat :

Po tem so ocene v Rezultat Stolpec bodo krepko označeni.

Oddelek za prakso

Za samostojno izvajanje prakse smo pripravili Praksa kot spodaj v listu z imenom Praksa . Prosimo, da to storite sami.

Zaključek

V tem članku sem poskušal zajeti najlažji način iskanja podreza z uporabo VBA v Excelu učinkovito. Upam, da vam bo koristilo. Če imate kakršne koli predloge ali vprašanja, jih lahko delite z nami.

Hugh West je zelo izkušen trener Excela in analitik z več kot 10-letnimi izkušnjami v industriji. Po izobrazbi je diplomirani računovodstvo in finance ter magisterij poslovne administracije. Hugh ima strast do poučevanja in je razvil edinstven pristop k poučevanju, ki ga je enostavno slediti in razumeti. Njegovo strokovno znanje o Excelu je pomagalo na tisoče študentom in strokovnjakom po vsem svetu, da so izboljšali svoje sposobnosti in se izkazali v karieri. Prek svojega bloga Hugh deli svoje znanje s svetom, ponuja brezplačne vadnice za Excel in spletno usposabljanje, ki posameznikom in podjetjem pomaga doseči njihov polni potencial.