En este tutorial, aprenderá a encontrar la posición de la última aparición de un carácter en una cadena en Excel.
Hace unos días, a un colega se le ocurrió este problema.
Tenía una lista de URL como se muestra a continuación, y necesitaba extraer todos los caracteres después de la última barra diagonal ("/").
Entonces, por ejemplo, de https://example.com/archive/enero tuvo que extraer "enero".
Habría sido realmente fácil si solo hubiera habido una barra diagonal en las URL.
Lo que tenía era una enorme lista de miles de URL de diferente longitud y un número variable de barras diagonales.
En tales casos, el truco consiste en encontrar la posición de la última aparición de la barra diagonal en la URL.
En este tutorial, te mostraré dos formas de hacer esto:
- Usando una fórmula de Excel
- Usando una función personalizada (creada a través de VBA)
Obtener la última posición de un personaje usando la fórmula de Excel
Cuando tenga la posición de la última aparición, simplemente puede extraer cualquier cosa a la derecha usando la función DERECHA.
Aquí está la fórmula que buscaría la última posición de una barra diagonal y extraería todo el texto a la derecha de la misma.
= DERECHA (A2, LARGO (A2) -BUSCAR ("@", SUSTITUIR (A2, "/", "@", LARGO (A2) -LENTE (SUSTITUIR (A2, "/", ""))), 1 ))
¿Cómo funciona esta fórmula?
Analicemos la fórmula y expliquemos cómo funciona cada parte.
- SUSTITUIR (A2, ”/”,“”) - Esta parte de la fórmula reemplaza la barra inclinada con una cadena vacía. Entonces, por ejemplo, en caso de que desee encontrar la aparición de cualquier cadena que no sea la barra inclinada, úsela aquí.
- LEN (A2) -LEN (SUSTITUYE (A2, ”/”,“”)) - Esta parte le dirá cuántas barras diagonales hay en la cadena. Simplemente resta la longitud de la cadena sin la barra inclinada hacia adelante de la longitud de la cadena con barras inclinadas hacia adelante.
- SUSTITUTO (A2, ”/”, ”@”, LEN (A2) -LEN (SUSTITUTO (A2, ”/”, ””))) - Esta parte de la fórmula reemplazaría la última barra inclinada con @. La idea es hacer que ese personaje sea único. Puedes usar cualquier personaje que quieras. Solo asegúrate de que sea único y no aparezca ya en la cadena.
- ENCONTRAR (“@”, SUSTITUIR (A2, ”/”, ”@”, LARGO (A2) -LENTE (SUSTITUIR (A2, ”/”, ””))), 1) - Esta parte de la fórmula le da la posición de la última barra inclinada hacia adelante.
- LEN (A2) -FIND (“@”, SUSTITUTO (A2, ”/”, ”@”, LEN (A2) -LEN (SUSTITUTO (A2, ”/”, ””))), 1) - Esta parte de la fórmula nos dirá cuántos caracteres hay después de la última barra inclinada.
- 1 )) - Ahora, esto simplemente nos daría la cadena después de la última barra inclinada.
Obtener la última posición de un personaje usando la función personalizada (VBA)
Si bien la fórmula anterior es excelente y funciona a las mil maravillas, es un poco complicada.
Si se siente cómodo usando VBA, puede usar una función personalizada (también llamada función definida por el usuario) creada a través de VBA. Esto puede simplificar la fórmula y ahorrar tiempo si tiene que hacerlo con frecuencia.
Usemos el mismo conjunto de datos de URL (como se muestra a continuación):
Para este caso, he creado una función llamada LastPosition, que encuentra la última posición del carácter especificado (que es una barra diagonal en este caso).
Aquí está la fórmula que hará esto:
= DERECHA (A2, LEN (A2) -Última posición (A2, "/") + 1)
Puede ver que esto es mucho más simple que el que usamos anteriormente.
Así es como funciona:
- LastPosition, que es nuestra función personalizada, devuelve la posición de la barra inclinada. Esta función toma dos argumentos: la referencia de celda que tiene la URL y el carácter cuya posición necesitamos encontrar.
- La función DERECHA nos da todos los caracteres después de la barra inclinada.
Aquí está el código VBA que creó esta función:
Función LastPosition (rCell As Range, rChar As String) 'Esta función proporciona la última posición del carácter especificado' Este código ha sido desarrollado por Sumit Bansal (https://trumpexcel.com) Dim rLen As Integer rLen = Len (rCell) For i = rLen To 1 Step -1 If Mid (rCell, i - 1, 1) = rChar Then LastPosition = i Exit Function End If Next i End Function
Para que esta función funcione, debe colocarla en el Editor de VB. Una vez hecho esto, puede utilizar esta función como cualquier otra función normal de Excel.
Estos son los pasos para copiar y pegar este código en el back-end de VB:
Estos son los pasos para colocar este código en el Editor de VB:
- Vaya a la pestaña Desarrollador.
- Haga clic en la opción de Visual Basic. Esto abrirá el editor de VB en el backend.
- En el panel Explorador de proyectos en el Editor de VB, haga clic con el botón derecho en cualquier objeto del libro en el que desea insertar el código. Si no ve el Explorador de proyectos, vaya a la pestaña Ver y haga clic en Explorador de proyectos.
- Vaya a Insertar y haga clic en Módulo. Esto insertará un objeto de módulo para su libro de trabajo.
- Copie y pegue el código en la ventana del módulo.
Ahora la fórmula estaría disponible en todas las hojas de trabajo del libro de trabajo.
Tenga en cuenta que debe guardar el libro de trabajo en formato .XLSM, ya que tiene una macro. Además, si desea que esta fórmula esté disponible en todos los libros de trabajo que usa, puede guardarlo en el Libro de macros personal o crear un complemento a partir de él.
También le pueden gustar los siguientes tutoriales de Excel:
- Cómo obtener el recuento de palabras en Excel.
- Cómo utilizar BUSCARV con varios criterios.
- Encuentre la última aparición de un valor de búsqueda en una lista en Excel.
- Extraer subcadena en Excel.