marzo 26, 2007

Función que Calcula RFC

He encontrado una manera de hacer una fórmula en EXcel que me obtiene el RFC de México. Espero que a alguien le sirva, y aunque me falta pulirla, pues por lo pronto sirve....


Bueno, aunque se ve algo mal, explicaré. Primero separo las letras del AP Paterno en las celdas G3,H3,I3, etc (para que no se vea este proceso se puede hacer en la AA3 o algo así, lejos de tu información, o en otra hoja). Separé las letras con la función EXTRAE (MID en inglés). Después en la celda G4 tengo algo así
=IF(OR(G3="a",G3="e",G3="i",G3="o",G3="u"),G3, IF(OR(H3="a",H3="e",H3="i",H3="o",H3="u"),H3,
IF(OR(I3="a",I3="e",I3="i",I3="o",I3="u"), I3, J3)))
Toda la fórmula es seguida pero no cabe. En esta fórmula voy comparando caracter a caracter que separé, si el segundo caracter (que está en G3), es alguna vocal, lo tomo y lo pongo en la celda en la que me encuentro, si no es vocal, me brinco al que sigue que en el ejemplo que tengo "Ortega", tuve que irme hasta el O-R-T-E (la E está en I3) para obtener la E que es la que necesito, obviamente la fórmula se tendrá que hacer para más consonantes al principio del apellido para que no vaya a ocurrir algún error.
Nota: Para obtener el RFC en México necesito:
1. La primer letra del ap. paterno
2. La primer vocal del ap. Paterno (que no sea la inicial)
3. La primer letra del ap. materno
4. Año
5. Mes
6. Día (los 3 últimos de la fecha de nacimiento)

Después me pongo en la celda E3 que es donde obtengo mi RFC y concateno las letras que necesito, de modo que la función final me queda:
=UPPER(CONCATENATE(MID(A3,1,1),G4,MID(B3,1,1),MID(C3,1,1),MID(D3,7,2),MID(D3,4,2), MID(D3,1,2)))
Donde MAYUSC (UPPER en inglés), me convierte a mayúsculas el texto, digo para que se vea más bonito, y con MID (EXTRAE) obtengo los demás caracteres que necesito.
Lo que está de azúl son los caracteres de la fecha, le sigue la primer letra del nombre, la primera del ap. materno, la que extraje de mi super función con IF's, y la primera del ap. paterno.
Ahora que pienso probablemente tuve que poner mis fórmulas en la misma celda y juntarlas, pero eso lo haré a la próxima... saludos y espero que a alguien le sirva y si tienen dudas me escriban.