VBA InStrRev | Com s'utilitza la funció Excel VBA InStrRev?

Excel VBA INSTRREV

VBA INSTRREV Funció, com significa "In String Reverse", retorna la posició de la primera aparició d'una cadena de cerca (subcadena) en una altra cadena, començant pel final de la cadena (de dreta a esquerra) des de la qual cerquem una cadena de cerca.

INSTRREV La funció comença a cercar la cadena que es pot cercar des del final de la cadena en què hem d’esbrinar-la, però compta la posició des del principi. N’hi ha un més INSTR Funció vba (significa "En cadena") que també busca una cadena en una altra cadena i retorna la posició, però aquesta funció inicia la cerca des del principi de la cadena des de la qual cerquem una cadena de cerca.

INSTRREV i INSTR, tots dos estan incorporats Funció VBA de cadena / text de MS Excel. Els podem utilitzar mentre escrivim qualsevol macro a Microsoft Visual Basic Editor.

Sintaxi

Com podem veure a la imatge anterior, hi ha 2 arguments obligatoris i 2 opcionals.

  • StringCheck As String: Aquest és l’argument obligatori. Hem de donar una expressió de cadena a la cerca.
  • StringMatch com a cadena: Aquest argument també és obligatori. Hem d’especificar l’expressió de cadena que s’està cercant.
  • Comença tant = -1: Aquest és un argument opcional. Especifiquem l’expressió numèrica. Per defecte, triga -1, cosa que significa que la cerca comença a la posició de l'últim caràcter. Si especifiquem qualsevol valor positiu com 80, llavors comença a cercar des del final de la cadena en aquests 80 caràcters de l'esquerra.
  • Compareu com a VbCompareMethod = vbBinaryCompare sempre que: Aquest argument és opcional.

Podem especificar els valors següents per a aquest argument.

Valors de retorn

  1. INSTRREV la funció retorna 0 si comprovació de cadenes és de longitud zero o partit de corda no es troba o 'començar' argument> longitud de partit de corda.
  2. Torna aquesta funció 'Nul' si a comprovació de cadenes o bé partit de corda és 'Nul'.
  3. Si el coincidència de corda és de longitud zero, llavors la funció torna a començar.
  4. Si a partit de corda es troba dins d’una comprovació de cadenes, llavors la funció retorna la posició en què es troba la coincidència.

Com s'utilitza la funció VBA INSTRREV?

Podeu descarregar aquesta plantilla Excel VBA INSTRREV aquí - Plantilla Excel VBA INSTRREV

Suposem que tenim dades sobre noms de pel·lícules i els seus directors. Volem dividir els noms dels directors.

Tenim dades en 1201 files. Si fem aquesta tasca manualment, trigarà molt de temps.

Per fer el mateix, utilitzarem el codi VBA. Els passos següents són:

  • Hem de fer clic a "Visual Basic" Ordre disponible a "Codi" Agrupa a 'Desenvolupador' Tab o podem prémer Alt + F11 per obrir l'editor visual bàsic.

  • Inserirem un fitxer mòdul utilitzant el Menú ‘Insereix’.

  • Crearem una subrutina anomenada "SplittingNames".

  • Necessitem 6 variables. Un per emmagatzemar els valors de les cel·les, que manipularem. El segon per emmagatzemar la posició del primer espai a la cadena, el tercer per emmagatzemar la posició del darrer espai a la cadena, el quart per emmagatzemar el número de la darrera fila, el cinquè i el sisè per a la fila i la columna que utilitzarem per imprimir els valors de les cel·les adjacents.

  • Per esbrinar l’última fila utilitzada al full, hem d’utilitzar el codi següent.

Aquest codi primer seleccionarà la cel·la B1 i, a continuació, seleccionarà l’última cel·la utilitzada a la mateixa columna i, a continuació, assignarem el número de fila de la cel·la a la variable ‘LastRow’.

  • Ara, per manipular totes les cel·les de la columna B, executarem un Bucle 'per'.

  • Emmagatzemarem el valor de les cel·les de la columna B de la fila 2 a la fila 1201 una a una a la variable ‘s’ per manipular-les.

  • Hem d’establir el valor de variable "Columna" a 3 ja que hem d’escriure els noms dividits en C (3a columna) i una columna en endavant.

  • Si la cadena és només una paraula que vol dir que no hi ha espai a la cadena, volem que la cadena es produeixi. Per a això, especificarem la condició mitjançant "Declaració If and Else" amb un signe d'asterisc (que indica un o més caràcters) de la següent manera:

  • Si hi ha espai a la cadena, volem dividir la cadena. Per fer el mateix hem utilitzat INSTR i INSTRREV funcionen tant per esbrinar la primera posició de l'espai com la darrera posició de l'espai respectivament. Ens ajudarà a trobar la primera paraula i la darrera paraula de la cadena respectivament.

La funció INSTR pren l'argument de la següent manera:

Detalls de l’argument

  • Començar: Des de quina posició començar.
  • Cadena 1: Hem de donar una expressió de cadena a la cerca.
  • Cadena 2: Hem d’especificar l’expressió de cadena que s’està cercant.

Comparat amb VbCompareMethod: Especificació del mètode de comparació. Per defecte, és una comparació binària.

  • Hem d’utilitzar el vba ESQUERRA funció per extreure caràcters esquerres de la cadena. Hem utilitzat "Last Space-1" per obtenir els caràcters esquerrans abans de l'últim espai.

Hem d'utilitzar el fitxer Funcions RIGHT i LEN per extreure els caràcters adequats de la cadena després del primer espai.

S'escriu la macro. Ara només hem d’executar la macro amb el fitxer F5 clau.

Codi:

 Sub SplittingNames () Dim s As String Dim FirstSpace Tan Long Dim LastSPace As Long Dim LastRow Tan Long Dim Fila Com Long Dim Columna Long Sheet1.Range ("B1"). Seleccioneu Selection.End (xlDown). Seleccioneu LastRow = ActiveCell. Fila per fila = 2 a LastRow s = Full1.Cells (fila, 2). Columna de valor = 3 Si s com "* *" FirstSpace = InStr (1, s, "") LastSPace = InStrRev (s, "") Sheet1.Cells (Fila, Columna) .Valor = Esquerra (s, LastSPace - 1) Sheet1.Cells (Fila, Columna + 1) .Value = Dreta (s, Len (s) - FirstSpace) La resta Sheet1.Cells (Fila, Columna) .Valor = s Finalització Si finalització següent Sub 

Ara tenim un resultat.