VBA InStrRev | Cum se utilizează funcția Excel VBA InStrRev?

Excel VBA INSTRREV

Funcția VBA INSTRREV , așa cum înseamnă „In String Reverse” , returnează poziția primei apariții a unui șir de căutare (sub șir) într-un alt șir, începând de la sfârșitul șirului (de la dreapta la stânga) din care căutăm un șir de căutare.

Funcția INSTRREV începe să caute șirul care poate fi căutat de la sfârșitul șirului în care trebuie să aflăm, dar numără poziția de la început. Există încă o funcție INSTR vba (înseamnă „În șir” ) care caută și un șir în alt șir și returnează poziția, dar această funcție începe căutarea de la începutul șirului din care căutăm șirul care poate fi căutat.

INSTRREV și INSTR , ambele sunt funcții VBA șir / text încorporate din MS Excel. Le putem folosi în timp ce scriem orice macro în Microsoft Visual Basic Editor.

Sintaxă

După cum putem vedea în imaginea de mai sus, există 2 argumente obligatorii și 2 argumente opționale.

  • StringCheck As String: Acesta este argumentul necesar. Trebuie să oferim expresia șirului căutată.
  • StringMatch As String: Este necesar și acest argument. Trebuie să specificăm expresia șirului căutată.
  • Start As Long = -1: Acesta este un argument opțional. Specificăm expresia numerică. În mod implicit, este nevoie de -1, ceea ce înseamnă că căutarea începe de la ultima poziție de caracter. Dacă specificăm orice valoare pozitivă ca 80, atunci începe să caute de la sfârșitul șirului în acele 80 de caractere din stânga.
  • Compare As VbCompareMethod = vbBinaryCompare As Long: Acest argument este opțional.

Putem specifica următoarele valori pentru acest argument.

Valori returnate

  1. Funcția INSTRREV returnează 0 dacă verificarea șirului  are o lungime zero sau  dacă nu se găsește potrivirea șirului sau argumentul „start” > lungimea potrivirii șirului .
  2. Această funcție returnează „Nul” dacă o verificare de șir  sau o potrivire a șirului  este „Nul” .
  3. Dacă potrivirea șirului are o lungime zero, atunci funcția revine la pornire .
  4. Dacă se găsește o potrivire de șir în cadrul unei verificări de șir , atunci funcția returnează poziția la care se găsește potrivirea.

Cum se folosește funcția VBA INSTRREV?

Puteți descărca acest șablon Excel VBA INSTRREV aici - Șablon Excel VBA INSTRREV

Să presupunem că avem date pentru numele filmelor și regizorii acestora. Vrem să împărțim numele regizorilor.

Avem date în 1201 rânduri. Dacă facem această sarcină manual, va dura mult timp.

Pentru a face același lucru, vom folosi codul VBA. Pașii sunt:

  • Trebuie să facem clic pe comanda „Visual Basic” disponibilă în grupul „Cod” din fila „Dezvoltator” sau putem apăsa Alt + F11 pentru a deschide editorul de bază vizual.

  • Vom insera un modul folosind meniul „Insert” .

  • Vom crea un subrutin numit „SplittingNames” .

  • Avem nevoie de 6 variabile. Unul pentru stocarea valorilor celulelor, pe care le vom manipula. Al doilea pentru stocarea poziției primului spațiu în șir, al treilea pentru stocarea poziției ultimului spațiu în șir, al patrulea pentru stocarea numărului ultimului rând, al cincilea și al șaselea pentru rând și coloană pe care le vom folosi pentru a imprima valorile în celulele adiacente.

  • Pentru a afla ultimul rând folosit din foaie, trebuie să folosim următorul cod.

Acest cod va selecta mai întâi celula B1 și apoi va selecta ultima celulă utilizată în aceeași coloană și apoi vom atribui numărul rândului celulei variabilei „LastRow”.

  • Acum, pentru a manipula toate celulele din coloana B, vom rula o buclă „pentru” .

  • Vom stoca valoarea celulelor coloanei B de la rândul 2 la rândul 1201 una câte una în variabila 's' pentru a le manipula.

  • Trebuie să setăm valoarea variabilei „Coloană” la 3 deoarece trebuie să scriem numele împărțite în C (a treia Coloană) și o coloană în continuare.

  • Dacă șirul este doar un cuvânt care înseamnă că nu există spațiu în șir, atunci vrem șirul în sine ca ieșire. Pentru aceasta, vom specifica condiția folosind „Instrucțiunea If și Else” cu un semn de asterisc (denotând unul sau mai multe caractere) după cum urmează:

  • Dacă există spațiu în șir, atunci vrem să împărțim șirul. Pentru a face același lucru, am folosit funcțiile INSTR și INSTRREV atât pentru a afla prima poziție spațială, respectiv ultima poziție spațială. Ne va ajuta să găsim primul cuvânt și respectiv ultimul cuvânt din șir.

Funcția INSTR ia argumentul după cum urmează:

Detalii argument

  • Start: Din ce poziție să înceapă.
  • Șirul 1: trebuie să oferim expresia șirului căutată.
  • String2: Trebuie să specificăm expresia șirului căutată.

Comparat ca VbCompareMethod: Specificarea metodei de comparare. În mod implicit, este o comparație binară.

  • Avem nevoie de a utiliza VBA STANGA funcția pentru a extrage caractere rămase din șirul. Am folosit „Ultimul spațiu-1” pentru a obține caracterele din stânga înainte de ultimul spațiu.

Trebuie să folosim funcțiile DREAPTA și LEN pentru a extrage caracterele potrivite din șir după primul spațiu.

Macro este scris. Acum trebuie doar să rulăm macro folosind tasta F5 .

Cod:

 Sub SplittingNames () Dim s As String Dim FirstSpace As Long Dim LastSPace As Long Dim LastRow As Long Dim Row As Long Dim Coloană Long Sheet1.Range ("B1"). Selectați Selection.End (xlDown) .Select LastRow = ActiveCell. Row For Row = 2 To LastRow s = Sheet1.Cells (Row, 2) .Value Column = 3 If s Like "* *" Then FirstSpace = InStr (1, s, "") LastSPace = InStrRev (s, "") Sheet1.Cells (Row, Column) .Value = Left (s, LastSPace - 1) Sheet1.Cells (Row, Column + 1) .Value = Right (s, Len (s) - FirstSpace) Else Sheet1.Cells (Row, Coloană) .Value = s End If Next End Sub 

Avem un rezultat acum.