Cómo convertir el mes a un numero, extraer las iniciales de varias palabras e intercalarlas para crear un código

Estoy utilizando la siguiente fórmula en "I2" para crear un código

=IZQUIERDA(C2,1)&IZQUIERDA(F2,2)&IZQUIERDA(D2,1)&SI(G2="ENERO",1,SI(G2="FEBRERO",2,SI(G2="MARZO",3,SI(G2="ABRIL",4,SI(G2="MAYO",5,SI(G2="JUNIO",6,SI(G2="JULIO",7,SI(G2="AGOSTO",8,SI(G2="SEPTIEMBRE",9,SI(G2="OCTUBRE",10,SI(G2="NOVIEMBRE",11,SI(G2="DICIEMBRE",2)))))))))))&IZQUIERDA(E2,1)&EXTRAE(E2,ENCONTRAR(" ",E2,1)+1,1)&DERECHA(H2,2))

C2              D2        E2                                      F2   G2         H2      I2

Sánchez   Pérez   José   Martín                   24   Enero   2017   S24P1JM17

Sánchez   Pérez   José                                  24   Enero   2017   #!valor

Sánchez Pérez José Martín Andrade 24 Enero 2017 S24P1JM17

1.- Cuando la persona tiene un nombre me marca #! Valor y cuando tiene tres nombres solo extrae dos iniciales ¿Cómo se puede extraer la inicial de cada nombre independiente de cuantos nombres tenga?

2.- ¿De qué manera se puede simplificar la función? O simplificar el proceso.

3 respuestas

Respuesta
1

¿Esto es lo que buscas?

Puse las fórmulas separadas porque en una sola te queda una fórmula demasiado larga y complicada, solo coloca las siguientes fórmulas en este orden, puedes ocultar las líneas de la G a la O para que solo tengas el resultado final pero antes de hacerlo conviértela en información en una tabla para que al introducir un nuevo nombre la fórmula se agregue sola.

celda G3=DERECHA(AÑO(F3),2)
celda h3=MAYUSC(IZQUIERDA(C3))
celda i3=MAYUSC(IZQUIERDA(D3))
celda j3=DIA(F3)
celda k3=MES(F3)
celda L3=LARGO(E3)-LARGO(SUSTITUIR(E3," ","")), esta formula es clave ya que 
te indica cuantos espacios en blanco hay entre las palabras por ejemmplo 2
espacios en blanco indica la presencia de 3 nombres.
celda m3=SI.ERROR(ENCONTRAR(" ",E3,1)+1,1), esta formula busca la posicion 
de la inicial del 2o nombre, si la celda solo contiene 1, pondra la inicial 
del unico nombre
celda n3==+SI.ERROR(ENCONTRAR(" ",E3,M3)+1,1),esta formula busca la posicion
de la inicial del 3er nombre igual si es nombre unico pondra la posicion de
la inicial de primer nombre
celda 03=MAYUSC(SI(L3=2,EXTRAE(E3,1,1)&EXTRAE(E3,M3,1)&EXTRAE(E3,N3,1),
SI(L3=1,EXTRAE(E3,1,1)&EXTRAE(E3,M3,1),SI(L3=1,EXTRAE(E3,1,1)
&EXTRAE(E3,M3,1),SI(L3=0,EXTRAE(E3,1,1),0)))))
Esta formula busca las iniciales sin importar que sean 3 o 2 nombres o 1 solo
celda p3=CONCATENAR(H3,J3,I3,K3,O3,G3) y por ultimo esa formula te crea 
el codigo que buscas
Respuesta
1
Respuesta
1

Cambia:

SI(G2="ENERO",1,SI(G2="FEBRERO",2,SI(G2="MARZO",3,SI(G2="ABRIL",4,SI(G2="MAYO",5,SI(G2="JUNIO",6,SI(G2="JULIO",7,SI(G2="AGOSTO",8,SI(G2="SEPTIEMBRE",9,SI(G2="OCTUBRE",10,SI(G2="NOVIEMBRE",11,SI(G2="DICIEMBRE",2)))))))))))

por:

Mes(Valor("1-"&g2))

Parece que tu fórmula original tiene un error pues consigna 2 para diciembre en lugar de 12

No olvides valorar la respuesta

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas