CreacioR.F.C. Resgistro Federal de Contribuyentes

Que tal ElsaMatilde, es un placer consultarle después de ver su amplio repertorio de respuestas satisfactorias y la dedicación que pone a esta actividad de manera altruista.
Mi petición, es la siguiente.
Mira tengo un listado de alumnos en Excel de la siguiente manera:
Celda B2
Sandoval Flores Javier
Celda C2
(Año de nacimiento, año día mes)
19931020
Celda D2
(Edad)
Celda E2
(¿Padre o tutor)? Etc.
He pretendido que en la celda A1, a través de una macro, aparezca el Registro federal de contribuyentes (RFC), el cual se construye de la siguiente manera:
1. Primer letra del primer apellido (en el ejemplo anterior sería:..)
S
2. Primer vocal del primer apellido
A
3. Primer letra del segundo apellido
F
4. Primer letra del primer nombre
J
5. Los primeros dos dígitos del año de nacimiento:
93
6. El número del mes de nacimientos.
10
7. El numero de día de nacimiento.
20
El RFC resultante quedaría de la siguiente manera
¿2SAFJ931020? ¿Sin comillas?
Existen algunas excepciones, las más importantes son para los nombres:
*Si la persona tiene dos nombres y el primero de ellos es José, se considera el segundo nombre, en el ejemplo anterior si Javier se llamara José Javier, se omite José y se toma el nombre de Javier.
*En el caso de una mujer se esta se llamará Maria Rosa, se omite María y se considera sólo el de Rosa
Por último, he intentado optimizar mi trabajo creando un UserForm en la cual inserte en la fila 3 los datos, luego, inserte en la fila 4 y así sucesivamente. Se consideren los campos de los datos del ejemplo anterior entre algunos más, esto con el propósito de hacer más rápido el llenado pero la verdad he fracasado en muchos de mis intentos, por lo cual de la manera más atenta, solicito tu valiosa ayuda
Sólo me resta brindarle un afectuoso saludo y el reconocimiento anticipado a sus conocimientos sobre el tema, agradeciendo su atención dispensada a mi petición de apoyo.
Su amigo Eduardo Orozco Nájera
Respuesta
1
Te he desarrollado una función que tendrás que copiarla en un módulo del Editor (Alt+F11, Insertar módulo)
Coloqué 2 formas de escribir cada nombre (mayúsc JOSE y minúsc. Con acento José). Si estilan escribir también las mayúsc con acento o todo en minúsculas, habrá que incluirlas en la instrucción correspondiente.
Esta función tiene 2 argumentos: dato y fecha. En la celda que quieras obtener este código, escribí:
=contribuye(B2;C2) considero que en B están los nombres y en C las fechas. Luego la arrastrás al resto de la col.
Si te da error en el nombre de la función, presioná el botón Función y buscá las definidas por el usuario. Ahí estará.
Function contribuye(dato As String, fecha As String)
Dim ini As Integer, conta As Integer
Dim letra1 As String, letra2 As String, letrax As String, letra3 As String
Dim espa1 As Integer, espa2 As Integer, espa3 As Integer
Dim texto As String
Dim año As String, mes As String, dia As String
ini = 2
conta = 0
letra1 = Mid(dato, 1, 1)
letrax = Mid(dato, 2, 1)
While conta = 0
If letrax <> "A" And letrax <> "E" And letrax <> "I" And letrax <> "O" And letrax <> "U" Then
ini = ini + 1
letrax = Mid(dato, ini, 1)
Else
conta = 1
End If
Wend
letra2 = letrax
espa1 = Application.WorksheetFunction.Search(" ", dato, 1)
letra3 = Mid(dato, espa1 + 1, 1)
espa2 = Application.WorksheetFunction.Search(" ", dato, espa1 + 1)
On Error Resume Next
espa3 = Application.WorksheetFunction.Search(" ", dato, espa2 + 1)
texto = Mid(dato, espa2 + 1, espa3 - espa2 - 1)
If texto = "JOSE" Or texto = "MARIA" Or texto = "José" Or texto = "María" Then
letra4 = Mid(dato, espa3 + 1, 1)
Else
letra4 = Mid(dato, espa2 + 1, 1)
End If
año = Mid(fecha, 3, 2)
mes = Mid(fecha, 5, 2)
dia = Mid(fecha, 7, 2)
contribuye = letra1 & letra2 & letra3 & letra4 & año & mes & dia
End Function
Espero tus comentarios y/o la finalización de la consulta.
Muchísimas gracias por tu amable y desinteresado apoyo, no podía contestarte debido al almantenimiento que sitio realizaba. La función que me enviaste fue satisfactoria y no solo eso, sino a demás acertada y útil. Eres en verdad un EXPERTA. Muchísimas gracias y hasta pronto
Tu amigo
Eduardo Orozco Nájera
Recibe un coordiasaludo desde Vicente Guerrero, Dgo.Mex.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas