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ția VBA șir / text încorporată a 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, durează -1, ceea ce înseamnă că căutarea începe de la ultima poziție de caracter. Dacă specificăm orice valoare pozitivă precum 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 în care se găsește potrivirea.

Cum se folosește funcția 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 - una 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 ultimului număr de rând, al cincilea și al șaselea pentru rând și coloană, pe care le vom folosi pentru a imprima valorile în adiacente celule.
  • 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ă, 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 până 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 3 -a 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ă:

Argument Details

  • Start: From which position to start.
  • String1: We need to give string expression being searched.
  • String2: We need to specify string expression being searched for.

Compared as VbCompareMethod: Specifying Comparing method. By default, it is binary compare.

  • We need to use the VBA LEFT function to extract left characters from the string. We have used ‘Last Space-1’ to get the left characters before the last space.

We need to use the RIGHT and LEN functions to extract the right characters from the string after the first space.

Macro is written. Now we just need to run the macro using the F5 key.

Code:

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) Altă Sheet1.Cells (Row, Coloană) .Value = s End If Next End Sub

Avem un rezultat acum.

Articole interesante...