Kā atrast apakšrindu, izmantojot VBA (9 veidi)

  • Dalīties Ar Šo
Hugh West

Ja meklējat dažus no vienkāršākajiem veidiem, kā atrast apakšvirzienu, izmantojot VBA, tad esat īstajā vietā. Pēc šī raksta izlasīšanas jūs varēsiet viegli atrast apakšvirziena pozīciju vai iegūt datus, izmantojot šo apakšvirzienu, vai mainīt apakšvirziena formātu. Iesim raksta turpinājumā.

Lejupielādēt darbgrāmatu

Parauga saturs

9 veidi, kā atrast apakšvirzienu, izmantojot VBA

Šeit man ir šāda datu tabula, kurā es parādīšu, kā atrast apakšvirzienu virknē, izmantojot VBA. Es arī mēģināšu parādīt, kā atrast apakšvirzienu izlases virknē.

Esmu veicis šo uzdevumu, izmantojot Microsoft Excel 365 versiju, varat izmantot jebkuru citu versiju atbilstoši savām vajadzībām.

1. metode: Virknes apakšvirknes atrašana virknē, izmantojot VBA

Ja vēlaties atrast vajadzīgo apakšvirzienu virknē, izmantojot VBA, varat izmantot funkcija InStr VBA kodā.

Solis-01 :

➤Iet uz Izstrādātājs Cilne>> Visual Basic Iespēja

Tad Visual Basic redaktors atvērsies.

➤Iet uz Ievietot Cilne>> Modulis Iespēja

Pēc tam Modulis tiks izveidots.

Solis-02 :

➤Narakstiet šādu kodu

 Sub FindFirst() Dim Pos As Integer Pos = InStr(1, "Es domāju, tāpēc es esmu", "domāju") MsgBox Pos End Sub 

Šeit, InStr(1, "Es domāju, tāpēc es esmu", "domāju") atgriezīs virknes apakšvirknes pozīciju. 1 ir sākuma pozīcija, " Es domāju, tātad es esmu" ir virkne, kurā tiks atrasta vēlamā apakšvirkne, un "domāt" pēc noklusējuma tas ir apakšvirkne, ko vēlaties atrast. Pēc noklusējuma tas ir lielajiem un mazajiem burtiem jutīgs, tāpēc uzmanieties, kāda ir meklēšanai paredzētās apakšvirknes burtu un ciparu vērtība.

➤Press F5

Rezultāts :

Pēc tam jūs saņemsiet šādu informāciju. Ziņu lodziņš kurā ir norādīta atrašanās vieta "domāt" apakšvirkne.

2. metode: Uz lietām un burtiem nejūtīgas apakšvirknes atrašana virknē

Ja vēlaties atrast vēlamo apakšvirzienu virknē neatkarīgi no gadījuma, izmantojot VBA, izmantojiet šo metodi.

Solis-01 :

➤ Sekot Solis-01 no 1. metode

 Public Sub caseinsensitive() Dim Pos As Integer Pos = InStr(1, "Es domāju, tāpēc es esmu", "domāju",vbTextCompare) MsgBox Pos End Sub 

Šeit, vbTextCompare tiek izmantots, lai atrastu maznozīmīgu apakšvirzienu.

➤Press F5

Rezultāts :

Pēc tam jūs saņemsiet šādu informāciju. Ziņu lodziņš kurā ir norādīta atrašanās vieta "domāt" apakšvirkne.

To pašu varat izdarīt, izmantojot šādu kodu.

 Iespēja Salīdzināt tekstu Public Sub caseinsensitive() Dim Pos As Integer Pos = InStr(1, "Es domāju, tāpēc es esmu", "domāju") MsgBox Pos End Sub 

Šeit, Iespēja Salīdzināt tekstu atradīs maznozīmīgu apakšvirsrakstu, kas nav atkarīga no burtu un atbilstu burtu lielumiem.

➤Press F5

Rezultāts :

Pēc tam jūs iegūsiet šādu informāciju. Ziņu lodziņš kurā ir norādīta atrašanās vieta "domāt" zemsitērija.

3. metode: InstrRev funkcijas izmantošana VBA programmā

Šeit es parādīšu, kā atrast apakšvirzienu no virknes beigām.

Solis-01 :

➤ Sekot Solis-01 no 1. metode

 Sub FindFromEnd() MsgBox InStrRev("Es domāju, tātad es esmu", "Es") End Sub 

InStrRev tiks atrasta apakšvirkne no labās puses, nevis no kreisās puses.

➤Press F5

Rezultāts :

Pēc tam jūs saņemsiet šādu informāciju. Ziņu lodziņš kurā ir otrā "I" apakšvirkni no labās puses.

4. metode: Datu virknes apakšvirknes pozīcijas atrašana virknē datu diapazonā

Ja vēlaties atrast īpašo rakstzīmi "@" in the E-pasta identitāte , tad izmantojiet šo metodi. Es šeit esmu pievienojis Pozīcijas sleja šim nolūkam.

Solis-01 :

➤ Sekot Solis-01 no 1. metode

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

Tā izveidos funkciju ar nosaukumu FindSubstring (varat izmantot jebkuru citu nosaukumu)

vērtība ir šūnas atsauce, kas satur virkni, un tā ir deklarēta kā Diapazons .

Solis-02 :

➤Izvēlieties izeju Šūna E5

➤Type šādu funkciju (izveidots ar VBA )

=Substringa(D5)

D5 ir šūna, kurā atrodas virkne.

➤Press IEVADIET

➤Nosvītrojiet Uzpildes rokturis Rīks

Rezultāts :

Pēc tam jūs iegūsiet īpašā rakstzīmju pozīcijas. " @" in the E-pasta identitāte .

Līdzīgi lasījumi:

  • Kā atrast virkni šūnā, izmantojot VBA programmā Excel (2 metodes)
  • FindNext, izmantojot VBA programmā Excel (2 piemēri)
  • Kā atrast virkni ar VBA programmā Excel (8 piemēri)
  • VBA pēdējās rindas atrašana programmā Excel (5 veidi)

5. metode: konkrētas virknes apakšvirknes pārbaude datu diapazonā

Pieņemsim, ka vēlaties uzrakstīt Pass vai Nespēja sarakstīties pie skolēnu vārdiem atkarībā no Rezultātu sleja kur Pass vai Fail ir ierakstīta iekavās. Lai atrastu šo apakšrindu Rezultātu sleja un ierakstiet to Izturējis vai neizturējis aile izmantot šo metodi.

Solis-01 :

➤ Sekot Solis-01 no 1. metode

 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 = "F failed" End If Next cell End Sub 

Šajā gadījumā šūnu diapazons ir C5:C10 kas ir Rezultātu sleja

InStr(cell.value, "Pass")> 0 ir nosacījums, kad skaitlis ir lielāks par nulli (ja šūnā ir "Pass" ), tad nākamā rinda turpināsies un blakus esošajā šūnā parādīs rezultātu kā Nodots .

Ja nosacījums kļūst nepatiess, tas nozīmē, ka šūnā nav nevienas "Pass" tad rinda zem Citādi tiks izpildīts un sniegs izejas vērtību blakus esošajā šūnā kā Neveiksmīgs .

Šī cilpa turpināsies katrai šūnai.

➤Press F5

Rezultāts :

Pēc tam jūs iegūsiet šādus izvades rezultātus. Izturēt vai neizturēt sleja.

6. metode: noteiktas virknes apakšvirknes pārbaude un datu iegūšana

Es parādīšu ceļu, kā atrast skolēnus ar nosaukumu Michael in the Skolēna vārda sleja un iegūt atbilstošos datus, izmantojot VBA šajā metodē.

Solis-01 :

➤ Sekot Solis-01 no 1. metode

 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).vērtība End If Next i End Sub 

Šeit esmu izmantojis B100 Aktīvās lapas diapazons bet varat izmantot jebkuru diapazonu atbilstoši savām vajadzībām.

InStr(1, Range("B" & amp; i), "Michael")> 0 ir nosacījums, lai pārbaudītu, vai ailē esošā šūna B satur Michael

Range("E" & amp; icount & amp; ":G" & amp; icount) ir diapazons, kurā vēlaties ievadīt izejas datus, un Range("B" & amp; i & amp; & amp; ":D" & amp; i).value sniegs vērtības no kolonnām B uz D .

➤Press F5

Rezultāts :

Pēc tam iegūsiet šādus iegūtos datus par skolēniem, kuriem ir vārds. Michael .

7. metode: vārda apakšvirknes meklēšana

Ja vēlaties atrast apakšvirzienu kā vārdu, izmantojiet šo metodi.

Solis-01 :

➤ Sekot Solis-01 no 1. metode

 Sub Stringforword() Dim j As Integer j = InStr("Lūk, kas es esmu", "ir") If j = 0 Then MsgBox "Vārds nav atrasts" Else MsgBox "Vārds atrasts pozīcijā: " & amp; j End If End If End Sub 

Tiks pārbaudīts, vai virkne satur ir . un pēc tam tiks norādīta tā atrašanās vieta

➤Press F5

Rezultāts :

Pēc tam tiks parādīts šāds ziņojuma lodziņš, kurā parādīts. vārds atrasts stāvoklī: 6 (pozīcija ir ).

Šo kodu var pārbaudīt, ja vārdu virknē nav vārda.

➤ Ievadiet šādu kodu

 Sub Stringforword() Dim j As Integer j = InStr("Lūk, kas es esmu", "esmu") If j = 0 Then MsgBox "Vārds nav atrasts" Else MsgBox "Vārds atrasts pozīcijā: " & amp; j End If End Sub End Sub 

➤Press F5

Rezultāts :

Pēc tam tiks parādīts šāds ziņojuma lodziņš, kurā parādīts. vārds nav atrasts .

8. metode: Izmantojot Instr un LEFT funkciju

Šeit es paskaidrošu, kā atrast apakšvirziena pozīciju virknē un iegūt tekstus pirms šīs apakšvirziena, izmantojot VBA un funkcija LEFT .

Solis-01 :

➤ Sekot Solis-01 no 1. metode

 Sub InstrandLeft() Dim txt As String Dim j As Long txt = "Lūk, kas es esmu" j = InStr(txt, "ir") MsgBox Left(txt, j - 1) End Sub 

j = InStr(txt, "ir") ir apakšvirknes pozīcija ir un pa kreisi(txt, j - 1) tiks iegūtas apakšvirknes pirms ir . .

➤Press F5

Rezultāts :

Pēc tam tiks parādīts šāds ziņojuma lodziņš, kurā parādīts Šeit (apakšvirkne pirms ir . ).

9. metode: noteiktas virknes apakšvirknes pasvītrojums virknē

Jūs varat treknrakstā ierakstīt pakāpes pirms iekavām Rezultātu sleja izmantojot šo metodi.

Solis-01 :

➤ Sekot Solis-01 no 1. metode

 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, šūna, "(") atgriezīs pirmā iekavja pozīciju un Cell.Characters(1, txt - 1).Font.Bold padarīs apakšrindu pirms pirmā iekavja Bold .

Solis-02 :

➤Izvēlieties Rezultātu sleja

➤Iet uz Izstrādātājs Cilne>> Makroprocesori Iespēja

Tad a Makro tiks parādīts vednis.

➤Izvēlēties treknraksts (VBA koda nosaukums) un pēc tam Palaist .

Rezultāts :

Pēc tam pakāpes Rezultāts Kolonna būs treknrakstā.

Prakses sadaļa

Prakses veikšanai mēs esam nodrošinājuši Prakse sadaļu, piemēram, zemāk lapā ar nosaukumu Prakse . Lūdzu, dariet to pats.

Secinājums

Šajā rakstā es mēģināju aprakstīt vienkāršākos veidus, kā atrast apakšvirzienu, izmantojot VBA Ceru, ka tas jums būs noderīgs. Ja jums ir kādi ieteikumi vai jautājumi, nekautrējieties dalīties ar mums.

Hjū Vests ir ļoti pieredzējis Excel treneris un analītiķis ar vairāk nekā 10 gadu pieredzi šajā nozarē. Viņam ir bakalaura grāds grāmatvedībā un finansēs un maģistra grāds uzņēmējdarbības vadībā. Hjū aizraujas ar mācīšanu, un viņš ir izstrādājis unikālu mācīšanas pieeju, kas ir viegli izpildāma un saprotama. Viņa ekspertu zināšanas programmā Excel ir palīdzējušas tūkstošiem studentu un profesionāļu visā pasaulē uzlabot savas prasmes un izcelties karjerā. Izmantojot savu emuāru, Hjū dalās savās zināšanās ar pasauli, piedāvājot bezmaksas Excel apmācības un tiešsaistes apmācību, lai palīdzētu personām un uzņēmumiem pilnībā izmantot savu potenciālu.