Satura rādītājs
Ī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.
|
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,
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.