una ultima texto partir para palabra números numeros los funcion extraer extrae entre cómo celda caracteres caracter alfanumerica excel excel-2007 worksheet-function

excel - ultima - Extrae la última subcadena de una celda



funcion extrae en excel 2010 (9)

Tengo nombres en una columna. Necesito dividir solo los apellidos de esa columna en otra columna.

El apellido está delimitado por un espacio del lado derecho.

El contenido en la celda A2 = Alistair Stevens y yo ingresamos la fórmula en la celda B2 (necesito ''Stevens'' en la celda B2 )

Intenté usar las siguientes fórmulas:

=RIGHT(A2,FIND(" ",A2,1)-1) =RIGHT(A2,FIND(" ",A2))

Ambas fórmulas funcionan para esta celda, pero cuando la llevo / copio y pego para las celdas de abajo, no funciona. ¡Tengo los valores equivocados!

A3 -> David Mckenzie B3 -> Mckenzie


DERECHA devuelve la cantidad de caracteres en el segundo parámetro desde la derecha del primer parámetro. Entonces, quiere que la longitud total de su columna A reste el índice. que es por lo tanto:

=RIGHT(A2, LEN(A2)-FIND(" ", A2, 1))

Y debería considerar usar TRIM (A2) donde sea que aparezca ...


Esto funciona, incluso cuando hay segundos nombres:

=MID(A2,FIND(CHAR(1),SUBSTITUTE(A2," ",CHAR(1),LEN(A2)-LEN(SUBSTITUTE(A2," ",""))))+1,LEN(A2))

Si quieres todo, PERO el apellido, echa un vistazo a esta respuesta .

Si hay espacios finales en sus nombres, entonces puede eliminarlos reemplazando todas las instancias de A2 por TRIM(A2) en la fórmula anterior.

Tenga en cuenta que es solo por pura casualidad que su primera fórmula =RIGHT(A2,FIND(" ",A2,1)-1) funcione para Alistair Stevens . Esto se debe a que "Alistair" y " Stevens" contienen el mismo número de caracteres (si se cuenta el espacio principal en " Stevens" ).


La respuesta proporcionada por @Jean proporciona una solución de trabajo pero oscura (aunque no maneja espacios finales)

Como alternativa, considere una función definida por el usuario vba (UDF)

Function RightWord(r As Range) As Variant Dim s As String s = Trim(r.Value) RightWord = Mid(s, InStrRev(s, " ") + 1) End Function

Usar en hoja como
=RightWord(A2)



Prueba esto:

=RIGHT(TRIM(A2),LEN(TRIM(A2))-FIND(" ",TRIM(A2)))

Pude copiar / pegar la fórmula y funcionó bien.

Aquí hay una lista de funciones de texto de Excel (que funcionó en mayo de 2011, pero está sujeta a que se rompa la próxima vez que Microsoft cambie su sitio web). :-(

Puede usar funciones IF () anidadas en múltiples etapas para manejar nombres intermedios o iniciales, títulos, etc., si los espera. Las fórmulas de Excel no son compatibles con el bucle, por lo que hay algunos límites a lo que puede hacer.


Prueba esto:

Right(RC[-1],Len(RC[-1])-InStrRev(RC[-1]," "))


Pruebe esta función en Excel:

Public Shared Function SPLITTEXT(Text As String, SplitAt As String, ReturnZeroBasedIndex As Integer) As String Dim s() As String = Split(Text, SplitAt) If ReturnZeroBasedIndex <= s.Count - 1 Then Return s(ReturnZeroBasedIndex) Else Return "" End If End Function

Lo usas así:

Nombre (A1) | Apellido (A2)

Valor en la celda A1 = Michael Zomparelli

Quiero el apellido en la columna A2.

=SPLITTEXT(A1, " ", 1)

El último parámetro es el índice basado en cero que desea devolver. Entonces, si se divide en el espacio char entonces índice 0 = Michael e índice 1 = Zomparelli

La función anterior es una función .Net, pero se puede convertir fácilmente a VBA.


Si desea obtener la penúltima palabra en un texto, puede utilizar esta macro como una función en su hoja de cálculo:

Public Function Get2ndText(S As String) As String Dim sArr() As String Dim i As Integer sArr = Split(S, " ") ''get the next to the last string i = UBound(sArr) - 1 Get2ndText = sArr(i) End Function

Luego en su hoja de cálculo B1 como el texto:

CURRENT OWNER 915 BROADWAY ST HOUSTON TX 77012-2126

en B2 su fórmula sería:

=Get2ndText(B1)

El resultado sería

TX


Right(A1, Len(A1)-Find("(asterisk)",Substitute(A1, "(space)","(asterisk)",Len(A1)-Len(Substitute(A1,"(space)", "(no space)")))))

Prueba esto. Espero que funcione.