Hola a todos!.

Una tarea muy habitual en Excel es extraer una determinada palabra de un texto. Sobre esto ya escribí y aporté una solución en dos UDF: EXTRAER PENÚLTIMA PALABRA EN UN TEXTO

Hoy he revisado ese post y he mejorado la programación (lo hace todo en una única función) y además he añadido una nueva funcionalidad.

Os mostraré un ejemplo con un texto. He elegido el fragmento inicial de Platero y Yo de Juan Ramón Jiménez:

Como podéis observar vamos a extraer una serie de palabras en función de si lo hacemos por la izquierda o por la derecha. Pero antes de hacerlo, os voy a mostrar la UDF que he programado:

Option Explicit
Function EXTRAE_PALABRA(ByVal Target As String, P As Long, D As Boolean, R As Boolean)
    Dim MiDato As Variant, Palabra As String, MiArray As Variant, Item As Variant
    'Si R es verdadero comenzamos por la izquierda, si es falso por la derecha
    MiDato = IIf(R = True, Split(Target, " "), Split(StrReverse(Target), " "))
    Palabra = MiDato(P - 1)
    'Si D es verdadero eliminamos caracteres de la palabra.
    If D = True Then
        MiArray = Array(";", ",", ";", ":", ".")
        For Each Item In MiArray
            Palabra = Replace(Palabra, Item, "")
        Next
    End If
    'Si R es falso revertimos palabra extraída por la derecha
    EXTRAE_PALABRA = IIf(R = True, Palabra, StrReverse(Palabra))
End Function

La sintaxis de la función es la siguiente:

EXTRAE_PALABRA: Target, P, D, R

  • Target: Es la selección realizada, debe ser una celda con la cadena de texto o un texto entre comillas en la función. No se permite seleccionar un rango.
  • P: indica la palabra que queremos extraer, empieza en 1. El 0 o indicar un número superior de palabras mostrar error: ¡VALOR!
  • D: oculta o muestra caracteres tipo, coma, punto, etc en la palabra extraída. Por ejemplo evitar el punto en la última palabra de una frase. Si se indica VERDADERO o 1, se oculta, si se indica 0 o FALSO, se muestra.
  • R: Sirve para extraer las palabras empezando por la izquierda o la derecha. Si el valor es VERDADERO o 1 empezará por la izquierda, si es FALSO o 0, comenzará por la DERECHA.

Teniendo esta explicación en cuenta y el ejercicio que vamos a realizar, la función quedaría así en cada caso:

  • PRIMERA PALABRA IZQUIERDA: =EXTRAE_PALABRA(A2;1;VERDADERO;VERDADERO)
  • SEGUNDA PALABRA IZQUIERDA: =EXTRAE_PALABRA(A2;2;VERDADERO;VERDADERO)
  • PENÚLTIMA PALABRA DERECHA: =EXTRAE_PALABRA(A2;2;VERDADERO;FALSO)
  • ÚLTIMA PALABRA DERECHA: =EXTRAE_PALABRA(A2;1;VERDADERO;FALSO)

El resultado que obtendremos será el siguiente:

Perfecto, ¿verdad?. y además, en el código de la función podéis añadir al array los distintos caracteres que no queréis tener en cuenta cuando extraigáis palabras: MiArray = Array(";", ",", ";", ":", ".")

Es una función muy interesante y que nos evita utilizar grandes fórmulas anidadas o combinadas y de utilizar varias macros.

Y esto es todo, espero que os haya resultado de interés 🙂

Descarga el archivo de ejemplo pulsando en: 

¿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