VBA InStrRev - ¿Cómo utilizar la función InStrRev de Excel VBA?

Tabla de contenido

Excel VBA INSTRREV

La función VBA INSTRREV , como significa 'In String Reverse' , devuelve la posición de la primera aparición de una cadena de búsqueda (subcadena) en otra cadena, comenzando desde el final de la cadena (de derecha a izquierda) desde la que estamos buscando una cadena de búsqueda.

La función INSTRREV comienza a buscar la cadena de búsqueda desde el final de la cadena en la que necesitamos averiguar, pero cuenta la posición desde el principio. Hay una función INSTR VBA más (significa 'In String' ) que también busca una cadena en otra cadena y devuelve la posición, pero esta función inicia la búsqueda desde el principio de la cadena desde la que buscamos la cadena de búsqueda.

INSTRREV e INSTR , ambos son una función VBA de cadena / texto incorporada de MS Excel. Podemos usarlos mientras escribimos cualquier macro en Microsoft Visual Basic Editor.

Sintaxis

Como podemos ver en la imagen de arriba, hay 2 argumentos obligatorios y 2 opcionales.

  • StringCheck As String: este es el argumento requerido. Necesitamos dar la expresión de cadena que se busca.
  • StringMatch As String: este argumento también es obligatorio. Necesitamos especificar la expresión de cadena que se busca.
  • Start As Long = -1: este es un argumento opcional. Especificamos la expresión numérica. Por defecto, toma -1, lo que significa que la búsqueda comienza en la última posición del carácter. Si especificamos cualquier valor positivo como 80, entonces comienza a buscar desde el final de la cadena en esos 80 caracteres de la izquierda.
  • Compare As VbCompareMethod = vbBinaryCompare As Long: Este argumento es opcional.

Podemos especificar los siguientes valores para este argumento.

Valores devueltos

  1. La función INSTRREV devuelve 0 si la verificación de la cadena tiene una longitud cero o no se encuentra la coincidencia de la cadena o si el argumento 'inicio' > la longitud de la coincidencia de la cadena .
  2. Esta función devuelve 'Null' si una verificación de cadena o una coincidencia de cadena es 'Null'.
  3. Si la coincidencia de cadenas tiene una longitud cero, la función vuelve a comenzar .
  4. Si se encuentra una coincidencia de cadena dentro de una verificación de cadena , la función devuelve la posición en la que se encuentra la coincidencia.

¿Cómo utilizar la función VBA INSTRREV?

Supongamos que tenemos datos para los nombres de las películas y sus directores. Queremos separar los nombres de los directores.

Tenemos datos en 1201 filas. Si hacemos esta tarea manualmente, nos llevará mucho tiempo.

Para hacer lo mismo, usaremos el código VBA. Los pasos son:

  • Necesitamos hacer clic en el comando 'Visual Basic' disponible en el grupo 'Código' en la pestaña 'Desarrollador' , o podemos presionar Alt + F11 para abrir el editor visual básico.
  • Insertaremos un módulo usando el menú 'Insertar' .
  • Crearemos una subrutina llamada 'SplittingNames'.
  • Necesitamos 6 variables, una para almacenar los valores de las celdas, que manipularemos. Segundo para almacenar la posición del primer espacio en la cadena, tercero para almacenar la posición del último espacio en la cadena, cuarto para almacenar el último número de fila, quinto y sexto para fila y columna, que usaremos para imprimir los valores en adyacentes células.
  • Para averiguar la última fila utilizada en la hoja, necesitamos usar el siguiente código.

Este código primero seleccionará la celda B1 y luego seleccionará la última celda utilizada en la misma columna, y luego asignaremos el número de fila de la celda a la variable 'LastRow'.

  • Ahora, para manipular todas las celdas en la columna B, ejecutaremos un ciclo 'for' .
  • Almacenaremos el valor de las celdas de la columna B de la fila 2 a la fila 1201 una por una en la variable 's' para manipularlas.
  • Necesitamos establecer el valor de la variable 'Columna' en 3 ya que necesitamos escribir los nombres divididos en C ( Columna) y una columna en adelante.
  • Si la cadena es solo una palabra, eso significa que no hay espacio en la cadena, entonces queremos la cadena en sí como salida. Para esto, especificaremos la condición usando 'Sentencia If y Else' con un signo de asterisco (que denota uno o más caracteres) de la siguiente manera:
  • Si hay espacio en la cadena, entonces queremos dividir la cadena. Para hacer lo mismo, hemos usado las funciones INSTR e INSTRREV para averiguar la posición del primer espacio y la posición del último espacio, respectivamente. Nos ayudará a encontrar la primera palabra y la última palabra en la cadena, respectivamente.

La función INSTR toma el argumento de la siguiente manera:

Detalles del argumento

  • Inicio: Desde qué posición comenzar.
  • Cadena1: Necesitamos dar la expresión de cadena que se busca.
  • Cadena2: Necesitamos especificar la expresión de cadena que se busca.

Comparado como VbCompareMethod: especificando el método de comparación. De forma predeterminada, es una comparación binaria.

  • Necesitamos usar la función VBA LEFT para extraer los caracteres izquierdos de la cadena. Hemos utilizado 'Último espacio-1' para obtener los caracteres de la izquierda antes del último espacio.

Necesitamos usar las funciones RIGHT y LEN para extraer los caracteres correctos de la cadena después del primer espacio.

Se escribe macro. Ahora solo necesitamos ejecutar la macro usando la tecla F5 .

Código:

Sub SplittingNames () Dim s As String Dim FirstSpace Como Long Dim LastSPace Como Long Dim LastRow Como Long Dim Row Como Long Dim Column As Long Sheet1.Range ("B1"). Seleccione Selection.End (xlDown) .Select LastRow = ActiveCell. Fila para fila = 2 Hasta LastRow s = Sheet1.Cells (Row, 2) .Value Column = 3 If s Like "* *" Then FirstSpace = InStr (1, s, "") LastSPace = InStrRev (s, "") Sheet1.Cells (Fila, Columna) .Value = Izquierda (s, LastSPace - 1) Sheet1.Cells (Fila, Columna + 1) .Valor = Derecha (s, Len (s) - FirstSpace) Else Sheet1.Cells (Fila, Columna) .Value = s End If Next End Sub

Tenemos un resultado ahora.

Articulos interesantes...