
Tengo una hoja de cálculo de nombres de usuario.
El nombre y apellido están en la misma celda de la columna A
.
¿Existe una fórmula que concatene las dos primeras letras del nombre (primera palabra) y las dos primeras letras del apellido (segunda palabra)?
Por ejemplo John Doe
, debería convertirse en JoDo
.
Lo intenté
=LEFT(A1)&MID(A1,IFERROR(FIND(" ",A1),LEN(A1))+1,IFERROR(FIND(" ",SUBSTITUTE(A1," ","",1)),LEN(A1))-IFERROR(FIND(" ",A1),LEN(A1)))
pero esto me da JoDoe
como resultado.
Respuesta1
Sí; Suponiendo que cada persona solo tiene un nombre y apellido, y estos siempre están separados por un espacio, puedes usar lo siguiente:
=LEFT(A1,2)&MID(A1,SEARCH(" ",A1)+1,2)
Solo podría basar esta respuesta en esas suposiciones, ya que es todo lo que usted proporcionó.
O si quieres que aún se incluya un espacio:
=LEFT(A1,2)&" "&MID(A1,SEARCH(" ",A1)+1,2)
Respuesta2
Y para completar las cosas, aquí hay una solución que devolverá los dos primeros caracteres del nombre y los dos primeros caracteres del apellido.perotambién representa los segundos nombres.
=LEFT(A1,2)&LEFT(MID(A1,FIND("~~~~~",SUBSTITUTE(A1," ","~~~~~",LEN(A1)-LEN(SUBSTITUTE(A1," ",""))))+1,LEN(A1)),2)
Respuesta3
Respuesta4
Residencia enesta respuesta, aquí tienes una solución elegante que funciona con cualquier número de segundos nombres:
=LEFT(A1,2)&LEFT(TRIM(RIGHT(SUBSTITUTE(A1," ",REPT(" ",LEN(A1))),LEN(A1))),2)
Explicación:
SUBSTITUTE(A1, " ", REPT(" ",LEN(A1)))
reemplaza los espacios entre palabras con espacios iguales en número a la longitud de toda la cadena. El uso de la longitud de la cadena en lugar de un número arbitrariamente grande garantiza que la fórmula funcione para cadenas de cualquier longitud y significa que lo hace de manera eficiente.
RIGHT(space_expanded_string, LEN(A1))
extrae la palabra más a la derecha precedida por un montón de espacios. *
TRIM(space_prepended_rightmost_word)
extrae la palabra más a la derecha.
LEFT(rightmost_word, 2)
extrae los dos primeros caracteres de la palabra más a la derecha (apellido).
*Advertencia: si es posible que un nombre de usuario contenga espacios finales, deberá reemplazar el primer argumento de SUBSTITUTE()
, es decir A1
, por TRIM(A1)
. Los espacios iniciales y múltiples espacios consecutivos entre palabras se manejan correctamente solo con A1
.
Arreglando tu intento
Al observar más de cerca su intento de solución, parece que estaba muy cerca de encontrar una fórmula funcional para concatenar las dos primeras letras de la primera palabra (es decir, el nombre) y las dos primeras letras de lasegundopalabra si existiera.
Tenga en cuenta que si un nombre de usuario contuviera segundos nombres, la fórmula corregida tomaría incorrectamente las dos primeras letras del primer segundo nombre en lugar del apellido (suponiendo que su intención sea extraerlas del apellido).
Además, si todos los nombres de usuario constan únicamente de un nombre o de un nombre y un apellido, entonces la fórmula es innecesariamente complicada y puede simplificarse.
Para ver cómo funciona la fórmula y así arreglarlo, es más fácil si se embellece, así:
=
LEFT(A1,2) &
MID(
A1,
IFERROR(FIND(" ",A1), LEN(A1)) + 1,
IFERROR(
FIND(" ", SUBSTITUTE(A1," ","",1)),
LEN(A1)
)
- IFERROR(FIND(" ",A1), LEN(A1))
)
Para entender cómo funciona, primero observe lo que sucede cuando A1
no contiene espacios (es decir, contiene un solo nombre). Todas las IFERROR()
funciones evalúan sus segundos argumentos ya que FIND()
devuelven un #VALUE!
error si la cadena de búsqueda no se encuentra en la cadena de destino:
=
LEFT(A1,2) &
MID(
A1,
LEN(A1) + 1,
LEN(A1)
-LEN(A1)
)
El tercer argumento de MID()
se evalúa como cero, por lo que la función genera ""
y el resultado de la fórmula son los dos primeros caracteres del nombre único.
Ahora observe cuándo hay exactamente dos nombres (es decir, hay exactamente un espacio). La primera y tercera IFERROR()
funciones evalúan sus primeros argumentos, pero la segunda evalúa su segundo argumento ya que FIND(" ", SUBSTITUTE(A1," ","",1))
intenta encontrar otro espacio después de eliminar el primero y único:
=
LEFT(A1,2) &
MID(
A1,
FIND(" ",A1) + 1,
LEN(A1)
- FIND(" ",A1)
)
Claramente, MID()
devuelve la segunda palabra (es decir, el apellido) en su totalidad, y el resultado de la fórmula son los dos primeros caracteres del primer nombre seguidos detodolos caracteres del apellido.
Para completar, también veremos el caso en el que hay al menos tres nombres, aunque ahora debería ser bastante obvio cómo arreglar la fórmula. Esta vez, todas las IFERROR()
funciones evalúan sus primeros argumentos:
=
LEFT(A1,2) &
MID(
A1,
FIND(" ",A1) + 1,
FIND(" ", SUBSTITUTE(A1," ","",1))
- FIND(" ",A1)
)
Es un poco menos claro que en el caso anterior, pero MID()
devuelve exactamente la información completa.segundopalabra (es decir, primer segundo nombre). Por lo tanto, el resultado de la fórmula son los dos primeros caracteres del primer nombre seguidos de todos los caracteres del primer segundo nombre.
Obviamente, la solución es usarla LEFT()
para obtener los dos primeros caracteres del MID()
resultado:
=
LEFT(A1,2) &
LEFT(
MID(
A1,
IFERROR(FIND(" ",A1), LEN(A1)) + 1,
IFERROR(
FIND(" ", SUBSTITUTE(A1," ","",1)),
LEN(A1)
)
- IFERROR(FIND(" ",A1), LEN(A1))
),
2
)
La simplificación que mencioné anteriormente es reemplazar LEFT(MID(…,…,…), 2)
con MID(…,…,2)
:
=
LEFT(A1,2) &
MID(
A1,
IFERROR(FIND(" ",A1), LEN(A1)) + 1,
2
)
o en una línea:
=LEFT(A1,2)&MID(A1,IFERROR(FIND(" ",A1),LEN(A1))+1,2)
Esto es esencialmenteLa solución de PeterH.modificado para funcionar también con nombres únicos (en cuyo caso, el resultado son solo los dos primeros caracteres del nombre).
Nota:Las fórmulas embellecidas realmente funcionan si se ingresan.