25 septiembre, 2023

EXTRAER PENÚLTIMA PALABRA EN UN TEXTO

Hola a todos!!

¿Qué tal estáis?. Espero que bien!. Hace tiempo que no escribo nada, pero llevo unas semanas con bastante lío y tengo poco tiempo para escribir nuevas entradas, porque además algunas consultas que me están llegando son bastante complejas y no se pueden trasladar al blog.

Pero hoy voy a responder a una bastante sencilla y que me ha permitido crear una función específica (en realidad dos funciones) para resolver el problema.

La consulta es: «Hola, me puedes decir cómo extraer la penúltima palabra de una celda excel? Gracias«

Aunque es posible resolver esta cuestión recurriendo a una fórmula matricial, en mi opinión lo más eficiente es utilizar VBA y componer nuestra propia función personalizada. Vemos el ejemplo que voy a utilizar con un texto del que vamos a extraer la penúltima palabra.

El texto es un poema de Manoel Antonio, poeta gallego y uno de mis preferidos (y además era de Rianxo, muy cerca de Noia, mi pueblo natal). Está en su gallego original, se titula «Intencións»

EXTRAER PENÚLTIMA PALABRA EN UN TEXTO

Pues bien, para extraer la penúltima palabra vamos a recurrir a este código:

Function EXTRAE_PALABRA_DERECHA(ByVal Micelda, n As Integer)
'Declaramos variables
Dim sCadena As String, i As Integer, sCelda As String
Dim sCont As Integer, fin As Integer
'Añadimos espacio al inicio de la cadena de texto
sCelda = Space(1) & Micelda
fin = Len(sCelda)
'Recorremos cada caracter, si no es un espacio acumulamos hasta crear una palabra.
For i = fin To 1 Step -1
If (Mid(sCelda, i, 1)) <> " " Then
sCadena = sCadena & Mid(sCelda, i, 1)
'Si aparece un espacio, contamos (significa inicio de otra palabra)
Else
sCont = sCont + 1
'Si el contador es igual a "n" (la posición que queremos extraer) mostramos la palabra.
'Si no lo es vaciamos la variable
If sCont <> n Then sCadena = vbNullString
If sCont = n Then
EXTRAE_PALABRA_DERECHA = StrReverse(sCadena)
Exit Function
End If
End If
Next
End Function

El resultado es el siguiente:

EXTRAER PENÚLTIMA PALABRA EN UN TEXTO1

Como podéis observar solo tenéis que pegar el código en un módulo estándar y llamar a la función EXTRAE_PALABRA_DERECHA (podéis ponerle el nombre que más os guste modificando el código).

Los argumentos son =EXTRAE_PALABRA_DERECHA (Texto, letra a extraer desde la derecha), como empezamos por el final del texto, la penúltima letra será la 2, y la última la 1, y la antepenúltima la 3 …

Si queréis invertir la función y hacer lo mismo pero desde la izquierda, por ejemplo para extraer la segunda palabra, tendríamos que modificar sensiblemente el código:

Function EXTRAE_PALABRA_IZQUIERDA(ByVal Micelda, n As Integer)
Dim sCadena As String, i As Integer, sCelda As String
Dim sCont As Integer, fin As Integer
sCelda = Micelda & Space(1)
fin = Len(sCelda)
For i = 1 To fin Step 1
If (Mid(sCelda, i, 1)) <> " " Then
sCadena = sCadena & Mid(sCelda, i, 1)
Else
sCont = sCont + 1
If sCont <> n Then sCadena = vbNullString
If sCont = n Then
EXTRAE_PALABRA_IZQUIERDA = sCadena
Exit Function
End If
End If
Next
End Function

De esta forma, este sería el resultado de aplicar =EXTRAE_PALABRA_IZQUIERDA (A2;2)

EXTRAER PENÚLTIMA PALABRA EN UN TEXTO2

En el caso de las comas y otros caracteres, se podría implementar un control en el código para no tenerlas en cuenta, pero lo podéis solucionar con un sencillo reemplazar.

¿Os ha gustado?, seguro que sí y seguro que os resultará de mucha utilidad, porque os va a permitir poder extraer la palabra que queráis independientemente de la longitud del texto, (por la derecha o por la izquierda).

Descarga el archivo de ejemplo pulsando en: EXTRAER PENÚLTIMA PALABRA EN UN TEXTO

¿Te ha resultado de interés?, puedes apoyar a Excel Signum con una pequeña donación.

Donate Button with Credit Cards

¡¡Muchas gracias!!

Mediante la suscripción al blog, la realización comentarios o el uso del formulario de contacto estás dando tu consentimiento expreso al tratamiento de los datos personales proporcionados según lo dispuesto en la ley vigente (LOPD). Tienes más información al respecto en esta página del blog: Política de Privacidad y Cookies

Comparte este post

Si te ha gustado o tienes alguna duda, puedes dejar aquí tu comentario.

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

ACEPTAR
Aviso de cookies