Tengo una hoja de cálculo de Excel que contiene una lista de cadenas. Cada cadena está compuesta por varias palabras, pero el número de palabras en cada cadena es diferente.
Usando las funciones integradas de Excel (sin VBA), ¿hay alguna manera de aislar la última palabra en cada cadena?
Ejemplos:
¿Estás clasificado como humano? -> humano? Negativo, soy una paleta de carne -> paleta Aziz! ¡Ligero! -> ¡Luz!
excel
excel-formula
e.James
fuente
fuente
Respuestas:
Este está probado y funciona (según la publicación original de Brad):
Si sus cadenas originales pudieran contener una tubería "|" carácter, luego reemplace ambos en lo anterior con algún otro carácter que no aparecerá en su fuente. (Sospecho que el original de Brad estaba roto porque se eliminó un carácter no imprimible en la traducción).
Bonificación: cómo funciona (de derecha a izquierda):
LEN(A1)-LEN(SUBSTITUTE(A1," ",""))
- Conteo de espacios en la cadena originalSUBSTITUTE(A1," ","|", ... )
- Reemplaza solo el espacio final con un|
FIND("|", ... )
- Encuentra la posición absoluta de ese reemplazado|
(ese fue el espacio final)Right(A1,LEN(A1) - ... ))
- Devuelve todos los caracteres después de eso|
EDITAR: para tener en cuenta el caso en el que el texto de origen no contiene espacios, agregue lo siguiente al comienzo de la fórmula:
haciendo toda la fórmula ahora:
O puede usar la
=IF(COUNTIF(A1,"* *")
sintaxis de la otra versión.Cuando la cadena original puede contener un espacio en la última posición, agregue una función de recorte mientras cuenta todos los espacios: Haga que la función sea la siguiente:
fuente
Esta es la técnica que he usado con gran éxito:
Para obtener la primera palabra en una cadena, simplemente cambie de DERECHA a IZQUIERDA
Además, reemplace A1 por la celda que contiene el texto.
fuente
" "
con mi delimitador. Los dos100
s parecen limitarlo a una cadena de 100 caracteres si no me equivoco=TRIM(SUBSTITUTE(RIGHT(SUBSTITUTE(A1, ".", REPT(".", 100)), 100), ".", ""))
Una versión más robusta de la respuesta de Jerry:
Eso funciona independientemente de la longitud de la cadena, los espacios iniciales o finales, o lo que sea, y sigue siendo bastante corto y simple.
fuente
=TRIM(RIGHT(SUBSTITUTE(TRIM(A1), ".", REPT(" ", LEN(TRIM(A1)))), LEN(TRIM(A1))))
para obtener la extensión del archivo.SUBSTITUTE
permite trabajar para cualquier personaje, no solo espacios.=TRIM(SUBSTITUTE(RIGHT(SUBSTITUTE(TRIM(A1),"/",REPT("/",LEN(TRIM(A1)))),LEN(TRIM(A1))),"/",""))
, donde "/" es el carácter delimitador." ; "
(punto y coma rodeado por espacios) con el valor de entrada:"Technology Sprint 24 ; Sprint 4"
devuelve:"; Sprint 4"
. Estoy usando la solución adaptada por: @PProteus.TRIM(A1)
por:TRIM(SUBSTITUTE(A1, "strDelimeter", ";"))
en todos los lugares, para tener un nuevo delimitador de caracteres:";"
o incluso mejor usando lachar()
función para encontrar algún personaje realmente inesperado.TRIM
función después de agregar el segundoSUBSTITUTE
para la solución de carácter único de caso general. La fórmula proporciona el resultado esperado eliminando esta parte:=SUBSTITUTE(RIGHT(SUBSTITUTE(TRIM(A1),";",REPT(";",LEN(TRIM(A1)))),LEN(TRIM(A1))),";","")
Encontré esto en google, probé en Excel 2003 y funciona para mí:
[editar] No tengo suficiente representante para comentar, así que este parece el mejor lugar ... La respuesta de BradC tampoco funciona con espacios finales o celdas vacías ...
[2da edición] en realidad, no funciona para palabras sueltas tampoco ...
fuente
Esto es muy robusto: funciona para oraciones sin espacios, espacios iniciales / finales, múltiples espacios, múltiples espacios iniciales / finales ... y utilicé char (7) para el delimitador en lugar de la barra vertical "|" en caso de que sea un elemento de texto deseado.
fuente
Esto es muy limpio y compacto, y funciona bien.
No es una trampa de error para espacios o una palabra, pero eso es fácil de agregar.
Editar:
maneja espacios finales, una sola palabra y escenarios de celda vacía. No he encontrado una manera de romperlo.
fuente
fuente
Para agregar a las respuestas de Jerry y Joe, si desea encontrar el texto ANTES de la última palabra, puede usar:
Con 'My little cat' en A1 daría como resultado 'My little cat' (donde Joe y Jerry's le darían 'cat'
De la misma manera que Jerry y Joe aíslan la última palabra, esto solo pone todo a la izquierda de eso (luego lo recorta)
fuente
Imagina que la cuerda se puede revertir. Entonces es realmente fácil. En lugar de trabajar en la cadena:
usted trabaja con
Con
=LEFT(A1;FIND(" ";A1)-1)
en A2 obtienes"My"
con (1) y"tac"
con (2), que se invierte"cat"
, la última palabra en (1).Hay algunos VBA para revertir una cadena. Prefiero la función pública de VBA
ReverseString
.Instale lo anterior como se describe. Luego, con su cadena en A1, por ejemplo,
"My little cat"
y esta función en A2:lo verás
"cat"
en A2.El método anterior supone que las palabras están separadas por espacios en blanco. La
IF
cláusula es para celdas que contienen palabras simples = sin espacios en blanco en la celda. Nota:TRIM
yCLEAN
la cadena original también son útiles. En principio, invierte toda la cadena desde A1 y simplemente encuentra el primer espacio en blanco en la cadena invertida que está al lado de la última palabra (invertida) (es decir,"tac "
).LEFT
elige esta palabra y otra inversión de cadena reconstituye el orden original de la palabra (" cat"
). Al-1
final de laFIND
declaración elimina el espacio en blanco.La idea es que es fácil de extraer la primera (!) Palabra de una cadena con
LEFT
eFIND
ing el primer espacio en blanco. Sin embargo, para la última palabra (!), LaRIGHT
función es la elección incorrecta cuando intenta hacerlo porque desafortunadamente FIND no tiene una bandera para la dirección en la que desea analizar su cadena.Por lo tanto, toda la cadena simplemente se invierte.
LEFT
yFIND
funciona normalmente, pero la cadena extraída se invierte. Pero el suyo no es gran cosa una vez que sabe cómo invertir una cadena. La primeraReverseString
declaración en la fórmula hace este trabajo.fuente
fuente
Copie en una columna, seleccione esa columna y HOME> Edición> Buscar y seleccionar, reemplazar:
Replace All.
Hay un espacio después del asterisco.
fuente
Traduje a PT-BR, ya que también necesitaba esto.
(Tenga en cuenta que he cambiado el espacio a
\
porque solo necesitaba el nombre de archivo de las cadenas de ruta).fuente
Otra forma de lograr esto es la siguiente
fuente
También tuve una tarea como esta y cuando terminé, usando el método anterior, se me ocurrió un nuevo método: ¿Por qué no haces esto?
¿Como suena esto?
fuente