Funcion Para Separar Nombres De Apellido

Solo consultas sobre Funciones y Fórmulas Excel.

Reglas del Foro
1. Antes de hacer tu pregunta intenta con el buscador de este foro (muchas preguntas ya fueron respondidas antes!)
2. Si haces una nueva pregunta, es muy recomendable que adjuntes el ejemplo Excel para poder comprenderla mejor!
3. Realiza tu pregunta de forma clara, explicando bien cada paso de lo que haces y tendrás más probabilidad de respuesta!
Compartir en:
     

Funcion Para Separar Nombres De Apellido

Notapor JOLUFE » 28 Jun 2007 10:50

NO PUEDO ENCONTRAR LA MANERA PARA SEPARAR DE UNA CELDA EL APELLIDO Y QUE LO INSERTE EN LA CELDA SIGUIENTE Y QUE EN LA CELDA ORIGINAL DEJE SOLAMENTE EL NOMBRE/S.
ESPERO HABER SIDO CLARO

SALUDOS Y GRACIAS POR SU AYUDA
No tiene los permisos requeridos para ver los archivos adjuntos a este mensaje.
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
JOLUFE
Miembro Frecuente
Miembro Frecuente
 
Registrado: 06 Oct 2005 17:15

Re: Funcion Para Separar Nombres De Apellido

Notapor Gabriel Raigosa » 28 Jun 2007 12:20

saludos:

puede usar el comando texto en columnas del menu datos.

Seleccione la columna "A"
Menu;
Datos \ texto en columnas
"Delimitados" > siguiente
"separadores", seleccionar espacio > siguiente
"destino", seleccionar B1 > siguiente
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
Avatar de Usuario
Gabriel Raigosa
Miembro Frecuente
Miembro Frecuente
 
Registrado: 23 Feb 2005 11:36
Ubicación: Medellin

Re: Funcion Para Separar Nombres De Apellido

Notapor Jordun » 28 Jun 2007 13:02

Hola,
suponiendo que siempre el apellido es la última palabra en la celda y que las palabras están separadas por espacios, puedes usar esta fórmula

=DERECHA(A1,LARGO(A1)-ENCONTRAR("*",SUSTITUIR(A1," ","*",LARGO(A1)-LARGO(SUSTITUIR(A1," ","")))))

donde A1 es la celda que contiene el nombre completo. Esta fórmula te dara siempre la última palabra de la celda como resultado.

Si la celda A1 tiene espacios al final de la última palabra (sucede a veces cuando se importan los nombre de una base de datos), puedes usar esta variante:

=DERECHA(ESPACIOS(A1);LARGO(ESPACIOS(A1))-ENCONTRAR("*";SUSTITUIR(ESPACIOS(A1);" ";"*";LARGO(ESPACIOS(A1))-LARGO(SUSTITUIR(ESPACIOS(A1);" ";"")))))
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
Jordun
Miembro Frecuente
Miembro Frecuente
 
Registrado: 03 Abr 2006 17:00

Re: Funcion Para Separar Nombres De Apellido

Notapor ByPaco » 16 Jul 2007 15:20

cuando me vi en esta disyuntiva, opte por grabar una macro, aunque al opción de 'Texto en Columnas' sirve.
Antes que nada deberás usar un separador entre Apellido Paterno, Apellido Materno y Nombre(s), luego usar una de las 2 opciones
Código: Seleccionar todo
Sub SeparaNombres()
' Separa Nombres con división "/" en columnas con encabezado
' Posicionarse en la primera celda a separar
' Macro recorded 02/10/2004 ByPaco
' actualizada el 01/09/2005 daba error, si los datos estaban al tope superior de la hoja
' 22/08/2006 Se agregó la opción para poder elegir un separador

    'Solicita un separador
    Sepa = InputBox("Escriba aquí­ el tipo de separador que usa para distinguir Nombres de apellidos", "Separador de Nombres", "/")
    If Sepa = " " Or Sepa = "" Or Sepa = "  " Then msg = MsgBox("No se permiten espacios", vbOKOnly, "¡¡ A T E N C I í“ N !!")
    If msg = vbOK Then GoTo fin 'Si el separador es un espacio o no pone nada termina el proceso
    If Cells(ActiveCell.Row, ActiveCell.Column).Value = Empty Then GoTo fin
    'Insera tres columnas una para nombre(s) y dos para los apellidos
    ActiveCell.EntireColumn.Insert
    ActiveCell.EntireColumn.Insert
    ActiveCell.EntireColumn.Insert
    Cells(ActiveCell.Row, ActiveCell.Column + 3).Select 'Se posiciona en la primera celda despues de las columnas insertadas
    Range(Selection, Selection.End(xlDown)).Select 'Selecciona toda la cadena de filas
    'Realiza la separación
    Selection.TextToColumns Destination:=Cells(ActiveCell.Row, ActiveCell.Column - 3), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
        Semicolon:=False, Space:=False, Other:=True, OtherChar:=Sepa, FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1))
    Selection.EntireColumn.Delete 'Borra la última columna
    On Error GoTo Ins 'si causa error por no tener vacia la celda superior, inserta una
    ActiveCell.Offset(-1, 0).Range("A1").Select
Ins:
    If Err = 1004 Then
    Selection.End(xlUp).Select
    Selection.EntireRow.Insert
    Cells(ActiveCell.Row, ActiveCell.Column).Select
    End If
    'Pone los encabezados de las columnas
    On Error Resume Next
    ActiveCell.Offset(0, -3).Range("A1").Select
    ActiveCell.FormulaR1C1 = InputBox("Primer encabezado, normalmente Apellido Paterno", "Encabezado", "Ap.Paterno")
    ActiveCell.Columns("A:A").EntireColumn.EntireColumn.AutoFit
    ActiveCell.Offset(0, 1).Range("A1").Select
    ActiveCell.FormulaR1C1 = InputBox("Segundo encabezado, normalmente Apellido Materno", "Encabezado", "Ap.Materno")
    ActiveCell.Columns("A:A").EntireColumn.EntireColumn.AutoFit
    ActiveCell.Offset(0, 1).Range("A1").Select
    ActiveCell.FormulaR1C1 = InputBox("Tercer encabezado, normalmente Nombre(s)", "Encabezado", "Nombre(s)")
    ActiveCell.Columns("A:A").EntireColumn.EntireColumn.AutoFit 'Ajusta el ancho del rango
'Termina el proceso
fin:
End Sub
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
Avatar de Usuario
ByPaco
Miembro Frecuente
Miembro Frecuente
 
Registrado: 25 Jul 2005 13:57
Ubicación: Irapuato, Gto.

Re: Funcion Para Separar Nombres De Apellido

Notapor galileogali » 16 Jul 2007 19:22

Matricial mas , matricial menos.....

=EXTRAE(A1,MAX(SI(ESERROR(HALLAR(" ",A1,FILA(INDIRECTO("1:"&LARGO(A1))))),0,HALLAR(" ",A1,FILA(INDIRECTO("1:"&LARGO(A1)))))),255)

ingresar con CTRL+SHIFT+ENTER
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
galileogali
Moderator
Moderator
 
Registrado: 07 Ene 2005 22:46
Ubicación: QUIROGA (ba), ARGENTINA

Re: Funcion Para Separar Nombres De Apellido

Notapor galileogali » 16 Jul 2007 19:25

Correccion:
=EXTRAE(A1,MAX(SI(ESERROR(HALLAR(" ",A1,FILA(INDIRECTO("1:"&LARGO(A1))))),0,HALLAR(" ",A1,FILA(INDIRECTO("1:"&LARGO(A1))))))+1,255)
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
galileogali
Moderator
Moderator
 
Registrado: 07 Ene 2005 22:46
Ubicación: QUIROGA (ba), ARGENTINA

Re: Funcion Para Separar Nombres De Apellido

Notapor galileogali » 16 Jul 2007 19:33

Esta me parece mejor y no es MATRICIAL....

EXTRAE(A1,BUSCAR(256,HALLAR(" ",A1,FILA(INDIRECTO("1:"&LARGO(A1)))))+1,255)
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
galileogali
Moderator
Moderator
 
Registrado: 07 Ene 2005 22:46
Ubicación: QUIROGA (ba), ARGENTINA

Re: Funcion Para Separar Nombres De Apellido

Notapor KL » 17 Jul 2007 15:44

Una mas :-)
No tiene los permisos requeridos para ver los archivos adjuntos a este mensaje.
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
KL
Miembro Frecuente
Miembro Frecuente
 
Registrado: 18 Mar 2006 13:57
Ubicación: Madrid

Re: Funcion Para Separar Nombres De Apellido

Notapor galileogali » 17 Jul 2007 18:12

KL: estoy tratando de entender sin lograrlo.
Words devuelve una matriz horizontal formada por tantos elementos como palabras haya, No obstante no entiendo cómo funciona...
Cuando tengas un poco de tiempo....
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
galileogali
Moderator
Moderator
 
Registrado: 07 Ene 2005 22:46
Ubicación: QUIROGA (ba), ARGENTINA

Re: Funcion Para Separar Nombres De Apellido

Notapor galileogali » 17 Jul 2007 18:30

KL: ya cai....
tantas comillas juntas, inevitables por cierto, me confundieron....pero las llaves me condujeron al la construccion de la constante matricial, despues el Buscar("zzzz" de siempre....
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
galileogali
Moderator
Moderator
 
Registrado: 07 Ene 2005 22:46
Ubicación: QUIROGA (ba), ARGENTINA

Re: Funcion Para Separar Nombres De Apellido

Notapor KL » 17 Jul 2007 18:59

galileogali";p="39215 escribió:KL: estoy tratando de entender sin lograrlo.
Words devuelve una matriz horizontal formada por tantos elementos como palabras haya, No obstante no entiendo cómo funciona...
Cuando tengas un poco de tiempo....


Voy a traducir una respuesta que publique en un foro de Excel en ruso :-)

La idea:
Todo lo que esta dentro de EVALUATE(...) esta destinado a construir la formula final en formato texto(!) mediante concatenacion(!) y sustitucion(!). Mas o menos lo mismo hacemos cuando construimos una formula para introducirla en una celda desde un codigo VBA(!)

Lo Que Tenemos:
Texto en celda: "Jose Luis Sanchez"

Lo que Buscamos:
construir la siguiente formula como texto:
"{""Jose"";""Luis"";""Sanchez""}"
para luego calcularla mediante EVALUATE() y finalmente obtener la siguiente matriz: {"Jose";"Luis";"Sanchez"}

La Solucion:

Paso 1:
Creamos el inicio de la formula-texto que seria el primer corchete y la primera comilla de la primera palabra:
"{"""

Nota: Para obtener comillas dentro de una cadena de texto tenemos que duplicarlas

Paso 2:
Creamos la parte interior de la formula sustituyendo mediante la funcion SUSTITUIR() los espacios por el siguiente texto:
""";"""
y obtenemos : "Jose"";""Luis"";""Sanchez"

Paso 3:
Creamos el final de la formula que incluye la segunda comilla del ultimo elemento y el segundo corchete:
"""}"

Paso 4:
Concatenamos los resultados de los pasos 1, 2 y 3:
"{"""&"Jose"";""Luis"";""Sanchez"&"""}"

Paso 5:
Solo falta realizar el calculo final mediante la macrofuncion EVALUATE(), o sea
=EVALUATE("{""Jose"";""Luis"";""Sanchez""}")

Espero haber podido explicarlo. La solucion se basa en la idea contenida en una UDF que simula la funcion Split para Excel 97, cuya autoria, segun entiendo, pertenece a Tom Ogilvy:

Código: Seleccionar todo
Function Split(sStr As Variant, sdelim As String) As Variant
    Split = Evaluate("{""" & Application.Substitute(sStr, sdelim, """,""") & """}")
End Function
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
KL
Miembro Frecuente
Miembro Frecuente
 
Registrado: 18 Mar 2006 13:57
Ubicación: Madrid

Re: Funcion Para Separar Nombres De Apellido

Notapor KL » 17 Jul 2007 19:09

Solo falta añadir que esta solucion la publique mas bien como algo exotico. Tiene unas limitaciones, y especialmente la del maximo de 255 caracteres en la cadena de texto dentro de EVALUATE, cosa que hace esta solucion poco fiable para textos mas o menos largos. Cuidado, lo que cuenta contra el limite de 255 caracteres no es lo que vemos sino el resultado "invisible" de la formula:
"{""Jose"";""Luis"";""Sanchez""}"
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
KL
Miembro Frecuente
Miembro Frecuente
 
Registrado: 18 Mar 2006 13:57
Ubicación: Madrid

Re: Funcion Para Separar Nombres De Apellido

Notapor galileogali » 17 Jul 2007 20:35

EXCELENTE, ademas sigue abriendo puertas a la construcción de CONSTANTES MATRICIALES
Ahora bien aca va Mi camino CONSTRUCTIVO de la CADENA FORMULA para someter despues a EVALUAR...
sumar explicaciones, espero no sembrar confusión....
No tiene los permisos requeridos para ver los archivos adjuntos a este mensaje.
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
galileogali
Moderator
Moderator
 
Registrado: 07 Ene 2005 22:46
Ubicación: QUIROGA (ba), ARGENTINA

Notapor Gerson Pineda-El Catracho » 18 Jul 2007 16:21

Hola Jolufe
Mi aporte de forma un poco diferente = TRIM(PROPER(RIGHT(A1,LEN(A1)-FIND(" ",A1,1+FIND(" ",A1)))&", "&LEFT(A1,FIND(" ",A1,1+FIND(" ",A1)))))
Borra espacios innecesarios y convierte a nombre propio por si hay mala ortografia. Espero te sirva tambien.

Saludos...
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
Avatar de Usuario
Gerson Pineda-El Catracho
Miembro Frecuente
Miembro Frecuente
 
Registrado: 08 Abr 2005 13:52

Notapor ByPaco » 20 Jul 2007 19:52

En excel 2003, ¿se puede ver las macros '97?, si es así­ ¿como?
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
Avatar de Usuario
ByPaco
Miembro Frecuente
Miembro Frecuente
 
Registrado: 25 Jul 2005 13:57
Ubicación: Irapuato, Gto.

Siguiente

Compartir en:
     

  • Anuncio
Manual Excel avanzado

Volver a Funciones y Fórmulas

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 6 invitados