Kā atrast virkni ar VBA programmā Excel (8 piemēri)

  • Dalīties Ar Šo
Hugh West

Īstenošana VBA ir visefektīvākā, ātrākā un drošākā metode, lai veiktu jebkuru operāciju programmā Excel. Šajā rakstā mēs parādīsim, kā atrast noteiktas virknes citā dotajā virknē, izmantojot VBA programmā Excel.

Lejupielādēt prakses veidni

Bezmaksas prakses Excel veidni varat lejupielādēt no šejienes.

VBA, lai atrastu virknē String.xlsm

InStr funkcija

Microsoft Excel ir iebūvēta funkcija funkcija InStr lai atrastu konkrētu virkņu pozīciju dotajā virknē.

Vispārīgā sintakse:

InStr([start], string1, string2, [compare])

Šeit,

Argumenti Obligāti/pēc izvēles Definīcija
sākt Pēc izvēles Meklēšanas sākuma pozīcija.
  • Pēc noklusējuma InStr funkcija aprēķina rakstzīmes pozīciju, skaitot no 1, nevis no sākuma pozīcijas. Tāpēc, ja vēlaties, varat atstāt šo pozīciju tukšu.
string1 Nepieciešams Virkne, kurā meklēt, Primārā virkne.
string2 Nepieciešams Virkne, kas jāmeklē primārajā virknē.
salīdzināt Pēc izvēles Portāls InStr funkcija pēc noklusējuma nosaka mazos un lielos burtus. Bet, ja vēlaties palaist funkciju, kas nenosaka mazos un lielos burtus InStr , tad, lai veiktu noteiktu salīdzināšanu, šeit var iesniegt argumentu. Šis arguments var būt šādas vērtības,
  • vbBinaryCompare -> veic bināro salīdzināšanu, atgriešanas vērtība 0
  • vbTextCompare -> veic teksta salīdzināšanu, atgriešanas vērtība 1
  • vbDatubaseCompare -> veic datubāzes salīdzināšanu, atgriešanas vērtība 2

Pēc noklusējuma, InStr aizņem vbBinaryCompare kā salīdzināšanas argumentu.

8 vienkārši piemēri, kā atrast konkrētu virknes pozīciju dotajā virknē, izmantojot VBA

Apskatīsim dažus vienkāršus piemērus, kā iegūt noteiktu virkņu pozīcijas dotajā virknē, izmantojot VBA .

1. VBA, lai atrastu teksta pozīciju virknē

Zemāk ir šāds piemērs InStr lai atrastu teksta pozīciju virknē.

  • Spiediet Alt + F11 uz tastatūras vai atveriet cilni Izstrādātājs -> Visual Basic lai atvērtu Visual Basic redaktors .

  • Iznirstošajā koda logā izvēlnes joslā noklikšķiniet uz Ievietot -> Modulis .

  • Tagad koda logā uzrakstiet vienkāršu InStr programma iekšpusē VBA apakšprocedūra (sk. tālāk).
 Sub INSTR_Example() MsgBox InStr("Laime ir izvēle", "izvēle") End Sub 

Tagad jūsu kods ir gatavs darbam.

  • Spiediet F5 uz tastatūras vai izvēlnes joslā izvēlieties Run -> Run Sub/UserForm Varat arī vienkārši noklikšķināt uz maza ikona Atskaņot apakšizvēlnes joslā, lai palaistu makro.

Jūs redzēsiet, ka uznirstošā ziņojuma lodziņā tiks parādīts numurs, kas deklarē pozīciju tekstu, kuru vēlaties pārbaudīt.

Paskaidrojums:

Mūsu galvenā virkne " Laime ir izvēle " ir 21 burta teikums (ar atstarpēm), un mēs vēlējāmies atrast teksta " izvēle " šajā rindā. Teksts " izvēle " sākās no primārās virknes 16. pozīcijas, tāpēc mēs saņēmām numuru 16 kā mūsu izvades rezultātu ziņojuma lodziņā.

2. VBA, lai atrastu tekstu noteiktā pozīcijā virknē

Tagad noskaidrosim, kas notiktu, ja mēs gribētu iegūt pozīciju no noteikta skaitļa.

  • Tāpat kā iepriekš, atveriet Visual Basic redaktors no Izstrādātājs cilne un Ievietot a Modulis koda logā.
  • Koda logā uzrakstiet vienkāršu InStr Iepriekš parādīto programmu un sākuma argumentā ievadiet vērtību atbilstoši pozīcijai, no kuras vēlaties skaitīt tekstu.
 Sub INSTR_Example() MsgBox InStr(17, "Laime ir izvēle", "izvēle") End Sub 

  • Nākamais, Palaist kodu.

Jūs redzēsiet, ka uznirstošā ziņojuma lodziņā tiks parādīts numurs, kas deklarē pozīciju teksta sākot no noteiktas pozīcijas ko vēlējāties pārbaudīt.

Paskaidrojums:

Tā kā mēs jau zinājām (no 1. posma diskusijas), ka teksts " izvēle " sākās no pozīcijas 16 , tāpēc mēs iestarpinājām divus " izvēle " primārajā virknē un iestatiet 17 kā mūsu 1. parametru, lai izlaistu pirmo " izvēle ". Tātad, mēs Palaist iepriekš minēto makro, un tas parādīja mums pozīcijas numuru 27 kas precīzi atbilst pozīcijas numuram otrais " izvēle " dotajā virknē.

3. VBA, lai atrastu tekstu ar maznozīmīgu InStr funkciju virknē

No ieviešanas InStr funkciju, jūs jau zināt, ka pēc noklusējuma InStr funkcija ir atkarīga no mazajiem un lielajiem burtiem. To noskaidrosim ar piemēru.

Skatīt šādu informāciju. VBA kodu, kurā mēs vēlējāmies atrast vārda " Izvēle " ar lielais "C" rindā " Laime ir izvēle ", kur izvēle ir rakstīta ar mazais "c" .

  • Palaist kodu un atrast 0 kā mūsu izejas rezultātu.

Tas ir tāpēc, ka InStr funkcija apstrādā lielais "C" un mazais "c" atšķirīgi. Tā meklēja vārdu " Izvēle " virknē un nesaņēma nevienu atbilstību, tāpēc atgriezās 0 .

  • Lai veiktu InStr funkcija lielo un mazo burtu un atbilžu , iestatiet salīdzināšanas argumentu uz vbTextCompare (sk. tālāk).
 Sub INSTR_Example() MsgBox InStr(1, "Laime ir izvēle un izvēle", "Choice", vbTextCompare) End Sub 

  • Palaist kodu.

Jūs saņemsiet teksta atrašanās vieta no virknes, vai teksts ir rakstīts ar lielie vai mazie burti .

4. VBA, lai atrastu tekstu no virknes labās puses

Līdz šim InStr Funkcija sniedz tikai virknes kreisās puses pozīciju. Bet ko darīt, ja vēlaties atrast teksta pozīciju no virknes labās puses.

InStrRev funkcija meklē no labās puses. InStrRev funkcija darbojas ļoti līdzīgi funkcijai InStr funkciju, un tā atradīs jums teksta pozīciju no labajā pusē virknes.

Lai saprastu atšķirību, skatiet tālāk sniegtos piemērus.

  • Ja palaižam šādu kodu ar InStr funkcija tad,

tas sniedz mums pozīciju ( 16 ) pirmā teksta " izvēle ".

  • Bet, ja mēs palaižam to pašu kodu ar InStrRev Tad funkcija,

tas sniedz mums pozīciju ( 27 ) no pēdējā teksta " izvēle ".

Līdzīgi lasījumi:

  • FindNext, izmantojot VBA programmā Excel (2 piemēri)
  • Kā atrast un aizstāt, izmantojot VBA (11 veidi)
  • Precīza atbilstības atrašana, izmantojot VBA programmā Excel (5 veidi)

5. VBA, lai atrastu rakstzīmes pozīciju virknē

Varat arī atrast konkrētas rakstzīmes pozīciju virknē tādā pašā veidā, kā atrodat tekstu.

  • Kopējiet šādu kodu savā VBA koda logs
 Sub Find_Character() Dim z As Long z = InStr("Laime ir izvēle", "e") MsgBox z End Sub 

  • Un Palaist makro.

Pirmais " e " mūsu dotajā virknē ir numurs 7 pozīcija.

6. VBA, lai atrastu virknes virknes apakšrindu

Šeit mēs uzzināsim, kā atrast, vai virkne satur apakšvirkne vai nē.

Lai to iegūtu, mums ir jāpalaiž IF paziņojums mūsu kodā.

  • Tāpat kā iepriekš, atveriet Visual Basic redaktors no Izstrādātājs cilne un Ievietot a Modulis koda logā.
  • Koda logā nokopējiet un ielīmējiet šādu kodu.
 Public Sub FindSub() If InStr("Laime ir izvēle", "izvēle") = 0 Then MsgBox "Nav atrasta atbilstība" Else MsgBox "Atrasta atbilstība" End If End Sub 

Tagad jūsu kods ir gatavs darbam.

  • Palaist makro.

Ja jūsu virkne satur apakšrindu tad jūs saņemsiet atrasts sakritības variants , pretējā gadījumā netiks atrasta neviena atbilstība. Mūsu piemērā mēs vēlējāmies noskaidrot, vai mūsu primārā virkne " Laime ir izvēle " ir vārds " izvēle " vai nē. Tā kā tā ir, mēs saņemam Atrasts sakritība rezultāts.

7. VBA, lai atrastu virkni šūnu diapazonā

Varat meklēt noteiktu tekstu virknes šūnu diapazonā un atgriezt noteiktu virkni.

Aplūkojiet nākamo piemēru, kurā mēs atradīsim " Dr. ", un, ja tiek atrasta atbilstība, tiek atgriezts " Ārsts ".

  • Zemāk ir parādīts kods, lai iegūtu iepriekš minēto rezultātu,
 Sub Find_String_in_Range() Dim cell As Range For Each cell In Range("B5:B10") If InStr(cell.Value, "Dr.")> 0 Then cell.Offset(0, 1).Value = "Doctor" End If Next cell End Sub 

  • Palaist kods un rezultāts ir parādīts zemāk

  • Makro var modificēt atbilstoši savām vajadzībām. Piemēram, ja vēlaties atrast " Prof. " jebkurā virknes šūnā un iegūstiet " Profesors " kā atdevi, tad vienkārši nododiet " Prof. " kā vērtību, nevis " Dr. ." makrokopas 4. rindā un " Profesors ", nevis " Ārsts " makrokopas 5. rindā un attiecīgi definējiet šūnu diapazona numuru.

8. VBA, lai atrastu virkni šūnā

Varat arī meklēt noteiktu tekstu vienā virknes šūnā. un atgriezt noteiktu virkni.

  • Nokopējiet un ielīmējiet kodu logā šādu kodu.
 Sub Find_String_in_Cell() If InStr(Range("B5").Value, "Dr.")> 0 Then Range("C5").Value = "Doctor" End If End Sub 

Tā meklēs " Dr. " in Šūna B5 un, ja tas atrod atbilstību, tad atgriež " Ārsts " in Šūna C5 .

  • Makro var modificēt atbilstoši savām vajadzībām. Piemēram, ja vēlaties atrast " Prof. " jebkurā virknes šūnā un iegūstiet " Profesors " kā atdevi, tad vienkārši nododiet " Prof. " kā vērtību, nevis " Dr. ." makro 2. rindā un " Profesors ", nevis " Ārsts " makrokopas 3. rindā un attiecīgi definējiet šūnas atsauces numuru.

Secinājums

Šajā rakstā tika parādīts, kā atrast noteiktus tekstus virknē programmā Excel, izmantojot VBA makro. Es ceru, ka šis raksts jums ir bijis ļoti noderīgs. Jūs varat uzdot jebkādus jautājumus par šo tēmu.

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.