Si te encuentras con una situación en la que solo necesitas la primera palabra en cada línea de una celda en lugar de todo el carácter, debes leer este artículo. El siguiente tutorial lo ayudará a recuperar solo la primera palabra a través del código VBA en excel.

En este artículo, nos centraremos en cómo mantener la primera palabra solo en cada línea de una celda separada por punto y coma mediante códigos macro.

Pregunta: Los datos en los que estoy trabajando a veces tienen varias líneas en cada una de las celdas y solo quiero extraer la primera palabra.

A continuación se muestra una instantánea del texto de entrada (antes de la hoja)

img1

===

A continuación se muestra una instantánea del texto de entrada (después de la hoja) en la columna A y requiere salida en la columna B; consulte la siguiente instantánea:

===

img2

===

Para obtener el código; debemos seguir los pasos a continuación para iniciar el editor de VB. Haga clic en la pestaña Desarrollador. Desde el grupo Código, seleccione Visual Basic

img3

  • Copie el siguiente código en el módulo estándar

Function FirstWordOnly(rng As Range)

Dim Arr() As Variant

Dim Count As Integer

Dim i As Integer



Count = Len(rng) - Len(Replace(rng, Chr(10), ""))



If Count > 0 Then

ReDim Arr(0 To Count)

For i = 0 To Count

If i = 0 Then

Arr(i) = Left(rng, InStr(1, rng, " ") - 1)

ElseIf j = 0 Then

j = InStr(1, rng, Chr(10))

Arr(i) = Mid(rng, j + 1, InStr(j, rng, " ") - j)

Else

j = InStr(j + 1, rng, Chr(10))

Arr(i) = Mid(rng, j + 1, InStr(j, rng, " ") - j)

End If

Next



FirstWordOnly = Join(Arr, "; ")

Else

If InStr(1, rng, " ") > 0 Then

FirstWordOnly = Left(rng, InStr(1, rng, " "))

Else

FirstWordOnly = rng

End If



End If



End Function

img4

===

Ahora, el código VBA está listo para usarse; utilizaremos la función definida por el usuario recién creada, es decir, «FirstWordOnly» en Before Sheet.

Para obtener la salida usando UDF en la celda B2, la fórmula será = FirstWordOnly (A2)

img5

Explicación del código:

En el código anterior, hemos utilizado las funciones COUNT, LEN, REPLACE, IF, INSTR, MID, CHR, LEFT, JOIN VBA.

«Len (rng)»; esto comprobará la longitud de la celda a la que nos referimos ‘Reemplazar (rng, Chr (10),» «)’; El código verifica Chr (10), es decir, el salto de línea en cada línea y luego lo reemplaza con comillas dobles (nada)

«Count = Len (rng) – Len (Reemplazar (rng, Chr (10),» «))’; Count almacenará la diferencia de longitud de cada línea después de reemplazar el salto de línea. If Count> 0; esto verificará si la longitud de Count es mayor que cero y si se encuentra igual a cero, es decir, la celda está en blanco, entonces la condición IF no ejecutará el código. Para verificar esto, puede usar = FirstWordOnly (A5) en la celda B5 y devolverá 0

img6

Si la celda no está en blanco, entonces el bucle For se usará con la condición IF y, con la función IZQUIERDA, recuperaremos la primera palabra La función JOIN agregará un punto y coma al final si hay varias líneas en cada celda Conclusión: Usando UDF podemos eliminar todo en cada línea de celda excepto la primera palabra a través de VBA. Esta función funcionará en todas las versiones, desde la antigua hasta la nueva, es decir, Microsoft Excel 2003, Microsoft Excel 2007, Microsoft Excel 2010, Microsoft Excel 2013.

image 48

Si te gustaron nuestros blogs, compártelo con tus amigos en Facebook. Y también puedes seguirnos en Twitter y Facebook.

Nos encantaría saber de usted, háganos saber cómo podemos mejorar, complementar o innovar nuestro trabajo y hacerlo mejor para usted. Escríbanos a [email protected]