Reggie tiene una celda que contiene tres o más palabras. (El número de palabras puede variar). Necesita una fórmula que le permita extraer la primera palabra de la celda o la última palabra de la celda. Por ejemplo, si la celda contiene la frase «Reggie estuvo aquí en 2016», entonces necesita una fórmula para extraer «Reggie» y otra para extraer «2016».

Puedes extraer ambas palabras usando fórmulas. Extraer la primera palabra es relativamente sencillo. Todo lo que necesita hacer es encontrar la ubicación del primer espacio en la frase, luego extraer lo que esté a la izquierda. Si se supone que la frase está en A1, se puede utilizar la fórmula:

=LEFT(A1,FIND(" ",A1)-1)

Para extraer la última palabra, necesitará una fórmula ligeramente diferente:

=TRIM(RIGHT(SUBSTITUTE(TRIM(A1)," ",REPT(" ",255)),255))

Esta fórmula convierte los espacios en cadenas de 255 espacios en blanco. Luego encuentra los últimos 255 caracteres y recorta los caracteres a la izquierda, dejando la última palabra.

También puede, si lo prefiere, crear funciones definidas por el usuario para capturar las palabras que desee. Agarrar la primera palabra es fácil:

Function FirstWord(c As String)

Dim arr

arr = Split(Trim(c), " ")

FirstWord = arr(LBound(arr))

End Function

La función usa la función Dividir para separar lo que esté en la celda especificada, usando el segundo parámetro («») como delimitador. Cada elemento de la matriz (arr) contiene una parte de la cadena original. En este caso, lo que se devuelve es el primer elemento (especificado por LBound) de la matriz: la primera palabra.

Dado que las palabras de la frase se colocan en una matriz, puede usar solo una pequeña variación en la función para devolver la última palabra:

Function LastWord(c As String)

Dim arr

arr = Split(Trim(c), " ")

LastWord = arr(UBound(arr))

End Function

Tenga en cuenta que, esencialmente, el único cambio real en la función es el uso de UBound en lugar de LBound. La función UBound especifica el último elemento de la matriz. Puede usar ambas funciones en una hoja de trabajo de esta manera:

=FirstWord(A1)

=LastWord(A1)

Si lo prefiere, puede omitir el uso de la función Split y, en su lugar, usar algunas otras funciones relacionadas con cadenas:

Function GetFirst(c As String)

GetFirst = Left(c, InStr(c, " ") - 1)

End Function
Function GetLast(c As String)

GetFirst = Mid(c, InstrRev(c, " ") + 1)

End Function

_Nota: _

Si desea saber cómo usar las macros descritas en esta página (o en cualquier otra página de los sitios ExcelTips), he preparado una página especial que incluye información útil.

link: / excelribbon-ExcelTipsMacros [Haga clic aquí para abrir esa página especial en una nueva pestaña del navegador].

ExcelTips es su fuente de formación rentable en Microsoft Excel.

Este consejo (11985) se aplica a Microsoft Excel 2007, 2010, 2013 y 2016.

Puede encontrar una versión de este consejo para la interfaz de menú anterior de Excel aquí:

link: / excel-Extracting_First_and_Last_Words [Extracción de primeras y últimas palabras].