Como llegar a la primera palabra en Microsoft Excel
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.
Puede encontrar la pregunta original http://www.excelforum.com/excel-programming-vba-macros/1093228-keep-first-word-in-each-line-separate-by-semicolon-and-remove-everything-else .html [aquí]
A continuación se muestra una instantánea del texto de entrada (antes de la hoja)
===
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:
===
===
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
-
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
===
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)
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
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.
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]