Tom tiene una hoja de trabajo que contiene bastante texto. Necesita una forma de extraer, del texto de cualquier celda, la primera letra de cada palabra entre paréntesis. Por ejemplo, si una celda contiene «Hay una maleza (durante la primavera) que necesita ser erradicada», entonces Tom necesita extraer «dts»

de ese texto. Sospecha que esto debe hacerse con una macro, pero no sabe por dónde empezar.

Si desea realizar esta tarea manualmente, no es tan difícil de lograr. Seguiré los pasos de forma rápida y general.

Supongamos que su texto está en la columna A y que cada celda contiene solo un par de paréntesis. En este caso, podría poner lo siguiente en la columna B:

=IFERROR(LEFT(MID(A1,FIND("(",A1)+1,LEN(A1)),FIND(")", MID(A1,FIND("(",A1)+1,LEN(A1)))-1),"")

Aunque he dividido la fórmula en dos líneas aquí, recuerde que es una fórmula única y debe ingresarse como tal. Cópielo tantas celdas como sea necesario. Lo que terminas en la columna B es el texto contenido con el primer paréntesis (si corresponde) si la celda.

A continuación, seleccione todas las celdas en la columna B, presione Ctrl + C y luego use Pegado especial para pegar valores nuevamente en esas celdas. Esto elimina las fórmulas pero deja el texto entre paréntesis extraído.

Ahora las celdas de la columna B aún deberían estar seleccionadas. Desea utilizar el asistente de Texto a columnas (de la pestaña Datos de la cinta) para dividir las palabras en celdas individuales. Esto es fácil de hacer usando un espacio como delimitador en el asistente. Después de hacer esto, terminas con una sola palabra en cada columna comenzando con la columna C.

Ahora, en la primera columna que no tiene ninguna palabra (digamos que es la columna J), ingresarías la siguiente fórmula:

=LEFT(TRIM(C1),1) & LEFT(TRIM(D1),1) & LEFT(TRIM(E1),1)

& LEFT(TRIM(F1),1) & LEFT(TRIM(G1),1)) & LEFT(TRIM(H1),1)

& LEFT(TRIM(I1),1)

Nuevamente, esta es una fórmula única aunque se muestra aquí en tres líneas. Esto da como resultado las primeras letras que desea en la columna J.

Obviamente, este proceso es «factible» si solo necesita extraer las letras de vez en cuando. Si necesita hacerlo con más frecuencia, será mejor que confíe en una función definida por el usuario para que haga el trabajo por usted. El siguiente es uno simple que funcionará bien:

Function PickInitials(sRaw As String) As String     Dim sTemp As String     Dim J As Integer     Dim Wds() As String

sTemp = ""

J = InStr(sRaw, "(")

If J > 0 Then         sTemp = Mid(sRaw, J + 1)

J = InStr(sTemp, ")")

If J > 0 Then             sTemp = Left(sTemp, J - 1)

End If         Wds = Split(sTemp)



sTemp = ""

For J = 0 To UBound(Wds)

sTemp = sTemp & Left(Trim(Wds(J)),1)

Next J     End If     PickInitials = sTemp End Function

Para usar la función, todo lo que necesita hacer es usar lo siguiente en una celda:

=PickInitials(A1)

La función funcionará bien si no hay texto entre paréntesis en la celda, si solo hay un paréntesis de apertura, y no será arrojado por múltiples espacios entre palabras. La función conserva las mayúsculas de las letras iniciales. Si desea que devuelva todas las letras en minúsculas, puede cambiar la línea final de la macro a esto:

PickInitials = LCase(sTemp)

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

Este consejo (13622) se aplica a Microsoft Excel 2007, 2010, 2013, 2016, 2019 y Excel en Office 365.