Funcția Excel VBA InStr – explicată cu exemple

Ieri, am primit un e-mail de la unul dintre cititorii mei – iunie.

A vrut să știți cum să aplicați formatul de caractere aldine unei anumite părți a unui șir dintr-o celulă. De exemplu, aplicați formatul aldin doar cuvântului „Bună ziua” din „Bună ziua lumii”.

Și ea a vrut să facă acest lucru pentru sute de celule simultan.

Deoarece există nu există nicio funcționalitate încorporată în Excel care să poată face asta, am creat o macro simplă care utilizează funcția Excel VBA InStr (veți vedea cum să faceți acest lucru în Exemplul 4 din acest tutorial).

Dar mai întâi, să vedem cum funcționează funcția Excel VBA InStr!

Acest tutorial acoperă:

Funcția Excel VBA InStr

În acest tutorial, voi explica utilizarea funcției InStr în Excel VBA și voi vedea câteva exemple practice în care poate fi utilizată.

Funcția Excel VBA InStr – Introducere

Funcția InStr găsește poziția unui șir specificat în cadrul șirului și returnează prima poziție a apariției sale.

De exemplu, dacă doriți să găsiți poziția „x” în „Excel”, utilizând funcția Excel VBA InStr ar returna 2.

Sintaxa funcției InStr

  • – (argument opțional) aceasta este o valoare întreagă care indică funcției InStr poziția de pornire din care ar trebui să înceapă să caute. De exemplu, dacă vreau căutarea să înceapă de la început, voi introduce valoarea 1. Dacă vreau să înceapă cu al treilea caracter în continuare, voi folosi 3. Dacă este omis, se ia valoarea implicită 1.
  • Șirul 1 – Acesta este șirul principal (sau șirul părinte) în care doriți să căutați. De exemplu, dacă căutați poziția lui x în Excel, Șirul 1 ar fi „Excel”.
  • Șirul 2 – Acesta este șirul pe care îl căutați. De exemplu, dacă sunteți căutând poziția lui x în Excel, Șirul 2 ar fi x.
  • – (argument opțional) Puteți specifica una dintre următoarele trei valori pentru argument:
    • vbBinaryCompare – Acest lucru ar face un caracter prin comparație de caractere. De exemplu, dacă căutați „x” în „Excel”, acesta va întoarce 2, dar dacă căutați „X” în „Excel”, va întoarce 0 deoarece X este în partea superioară caz. Puteți utiliza și 0 în loc de vbBinaryCompare. Dacă argumentul este omis, acesta este considerat implicit.
    • vbTextCompare – Aceasta ar face o comparație textuală. De exemplu, dacă căutați „x” sau „X” în Excel, ar întoarce 2 în ambele cazuri. Acest argument ignoră litera cu majuscule. De asemenea, puteți utiliza 1 în loc de vbTextCompare.
    • vbDatabaseCompare – Acesta este utilizat numai pentru Microsoft Access. folosește informațiile din baza de date pentru efectuarea comparației. De asemenea, puteți utiliza 2 în loc de vbDatabaseCompare.

Note suplimentare despre funcția Excel VBA InStr:

  • InStr este un VBA funcție și nu o funcție de foaie de lucru. Acest lucru înseamnă că nu îl puteți folosi în foaia de lucru.
  • Dacă String2 (care este sub șirul a cărui poziție o căutați) este goală, funcția ar returna valoarea argumentului.
  • Dacă funcția InStr nu poate găsi sub șirul în șirul principal, ar întoarce 0.

Acum să aruncăm o privire la un exemplu de utilizare a funcției Excel VBA InStr

Exemplul 1 – Găsirea poziției de la început

În acest exemplu, voi folosi funcția InStr pentru a găsi poziția „V” în „Excel VBA” de la început.

Codul pentru aceasta ar fi:

Sub FindFromBeginning()Dim Position As IntegerPosition = InStr(1, "Excel VBA", "V", vbBinaryCompare)MsgBox PositionEnd Sub

Când rulați acest cod, acesta va afișa o casetă de mesaj cu valoarea 7, care este poziția „V” în șirul „Excel VBA”.

Exemplul 2 – Găsirea poziției de la începutul celui de-al doilea cuvânt

Să presupunem că vreau să găsesc poziția din „the” din propoziție – „Vulpea brună și rapidă sare peste câinele leneș”

Cu toate acestea, vreau ca începeți cu cel de-al doilea cuvânt în continuare.

În acest caz, trebuie să schimbăm argumentul pentru a ne asigura că specifică poziția de unde începe al doilea cuvânt.

Iată codul care va face acest lucru:

Sub FindFromSecondWord()Dim Position As IntegerPosition = InStr(4, "The quick brown fox jumps over the lazy dog", "the", vbBinaryCompare)MsgBox PositionEnd Sub

Acest cod va afișa caseta de mesaj cu valoarea 32 deoarece am specificat poziția de pornire ca 4. Prin urmare, ignoră prima ‘ „Și” găsește al doilea „the” în propoziție.

Dacă doriți să îl faceți mai dinamic, puteți îmbunătăți codul astfel încât să ignore automat primul cuvânt.

Iată codul îmbunătățit care va face acest lucru:

Sub FindFromSecondWord()Dim StartingPosition As IntegerDim Position As IntegerStartingPosition = InStr(1, "The quick brown fox jumps over the lazy dog", " ", vbBinaryCompare)Position = InStr(StartingPosition, "The quick brown fox jumps over the lazy dog", "the", vbBinaryCompare)MsgBox PositionEnd Sub

Acest cod găsește mai întâi poziția unui caracter spațial și îl stochează în variabila StartPoziție.

Apoi folosește această variabilă ca poziție de pornire pentru a căuta cuvântul „the”.

Prin urmare, returnează 32 (care este poziția de pornire a „the” după primul cuvânt).

Exemplul 3 – Găsirea poziției lui @ în adresa de e-mail

Puteți crea cu ușurință o funcție personalizată pentru a găsi poziția lui @ într-o adresă de e-mail utilizând funcția Excel VBA InStr.

Iată codul pentru a crea funcția personalizată:

Acum puteți utiliza această funcție personalizată ca orice altă funcție de foaie de lucru. Va lua o referință de celulă ca intrare și vă va oferi poziția @ în ea.

În mod similar, puteți crea un funcție personalizată pentru a găsi poziția oricărui sub-șir din șirul principal.

Exemplul 4 – Evidențierea unei părți a șirului în celule

Aceasta este interogarea adresată de June (cititorul meu care m-a inspirat și eu să scriu acest tutorial).

Iată un exemplu de date în format pe care mi le-a trimis June:

Interogarea ei a fost să facă numerele în afara parantezei aldine.

Iată codul pe care l-am creat, care face acest lucru:

Codul de mai sus folosește bucla Pentru fiecare pentru parcurgeți fiecare dintre celulele din selecție. Identifică poziția caracterului de paranteză de deschidere utilizând funcția InStr. Apoi modifică fontul textului dinaintea parantezei.

Pentru a utiliza acest cod, trebuie să copiați și să lipiți un modul în editorul VB.

Odată ce ați copiat lipit codul, selectați celulele în care doriți să efectuați această formatare și rulați macro-ul (așa cum se arată mai jos).

Vă pot plăcea, de asemenea, următoarele tutoriale Excel VBA:

  • Funcția Excel VBA SPLIT.
  • Funcția VBA TRIM.
  • Ghidul final pentru buclele VBA Excel .
  • Un ghid pentru începători pentru utilizarea următoarei bucle în Excel VBA.
  • Cum să creați și să utilizați un supliment Excel.
  • Cum să combinați mai multe cărți de lucru într-un registru de lucru Excel.
  • Cum se numără celulele colorate în Excel.
  • Exemple utile de macro VBA Excel pentru începători.
  • Cum se sortează datele în Excel folosind VBA (Un ghid pas cu pas)

Leave a Reply

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *