Necesito encontrar el último espacio en una celda XLS


11

Tengo una hoja de Excel con valores de texto, por ejemplo, en A1: "Este es el texto". Necesito encontrar la posición del último personaje espacial. ¿Existe una fórmula de Excel que me dará el resultado que quiero? He intentado ENCONTRAR y BUSCAR, sin embargo, estos comienzan desde la izquierda, lo que necesito es comenzar desde la derecha.

Respuestas:


23

Si por valor en blanco te refieres a "espacio", y por XLS te refieres a Excel, entonces puedes usar esta fórmula (suponiendo que la prueba en la que quieres encontrar el último espacio está A1):

=FIND("☃",SUBSTITUTE(A1," ","☃",LEN(A1)-LEN(SUBSTITUTE(A1," ",""))))

Puedes dividirlo en 3 partes:

  • LEN(A1)-LEN(SUBSTITUTE(A1," ",""))te da el número de espacios, llamémoslo x,
  • SUBSTITUTE(A1," ","☃",[x])reemplazará el xespacio th (el último) por un muñeco de nieve,
  • FIND("☃",[...])te dará la posición del muñeco de nieve. Cuál es la posición del último espacio.

Funciona perfecto Gracias. Me tomó un tiempo descubrir por qué funcionó a pesar de su explicación :)
Dheer

44
+1 para una respuesta agradable y detallada, y el personaje de reemplazo más creativo hasta el momento.
Doug Glancy

7

Aquí hay otra forma, cualquier personaje está permitido en A1 (¡incluso muñecos de nieve!)

=LOOKUP(2^15,FIND(" ",A1,ROW(INDIRECT("1:"&LEN(A1)))))

FIND tiene un tercer argumento que define la posición de inicio de la búsqueda, si aplica una matriz de valores enteros 1 a n (donde n es la longitud de A1) a ese parámetro, obtiene una matriz con el último número como la posición de la búsqueda último espacio

LOOKUPluego extrae ese número buscando un valor mayor que cualquier valor que pueda encontrarse en esa matriz, en cuyo caso se encuentra el último número

En Excel 2010o después, también puedes usar AGGREGATEfunciones como esta

=AGGREGATE(14,6,FIND(" ",A1,ROW(INDIRECT("1:"&LEN(A1)))),1)

FINDdevuelve la misma matriz que antes y al usar 14 como primer argumento de AGGREGATEy 1 como la última, obtiene el mayor valor en la matriz, mientras ignora los errores [6]


1
Funciona genial. Aunque fui desarrollador hace [mucho] tiempo, todavía no puedo entender cómo y por qué funciona INDIRECTO :)
Dheer

1
Suponiendo que A1 tiene 12 caracteres, esta parte se "1:"&LEN(A1)evalúa como "1:12", que es una cadena que ROW no puede procesar pero INDIRECTO convierte una cadena en una referencia válida que ROW puede manejar, por lo que ROW (1:12) le da {1 ; 2; 3; 4; 5; 6; 7; 8; 9; 10; 11; 12}
barry houdini

Gracias por clarif. Tiene algún sentido ahora. Lo que significa que Find en sí funciona implícitamente con la matriz y se ejecuta para cada valor como posición inicial ...
Dheer

Así es, FIND devuelve una matriz, por ejemplo, si A1 contiene barry larry houdini, FIND devolverá esta matriz {6;6;6;6;6;6;12;12;12;12;12;12;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!}y LOOKUP y / o AGGREGATE tomarán el último / mayor valor numérico de eso, es decir, 12
barry houdini
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.