Código en excel separado por puntos

Hola, tengo unos códigos en excel de esta manera 2.1.03.02.03.02, el caso está en que me los enviaron sin los puntos separadores así: 2103020302 y son millones de códigos y varían en números por ejemplo:
2.1.03.02
2.1.02.02.03
2.1.03.03.03.03
La verdad no se como poder agregarle los puntos a estos códigos, por favor me gustaría que me ayudaran, es muy importante... Gracias!

1 Respuesta

Respuesta
1
Bueno no habría problemas en ayudarte. Se me ocurre emplear varias funciones para realizar el cometido.
Los códigos del ejemplo hay un patrón según veo. Los primeros 5 caracteres se mantienen iguales en los 3 casos. ¿Mi duda es . Siempre sera así?. Recuerda que el punto es considerado también un carácter.
Es decir para los 3 códigos es igual el 2.1.0
Otra duda que tengo y que es necesario que me confirmes es la siguiente:
Desde el quinto carácter en adelante habrá 2 dígitos, luego un punto, dos dígitos, un punto, dos dígitos, un punto. ¿La repetición sera así?
El tercer código tiene 15 caracteres. ¿Esa es la longitud máxima de caracteres?.
A la espera de tu confirmación. Necesito esa información para evaluar y construir las fórmulas
Christian
Hola Christian, gracias por tu pronta respuesta!
Y sí, efectivamente los 3 primeros códigos siempre serán 2.1.0, y siempre habrá una repetición así como me lo indicas 2 dígitos 1 punto, 2 dígitos 1 punto, iniciando esos dígitos siempre sera cero "0" y por últimos los códigos tienen longitudes diferentes hasta de 21 caracteres!
Gracias nuevamente y quedo atenta a tus indicaciones.
Era necesario esa aclaración para poder trabajar en tu caso.
Emplear fórmulas en las hojas seria muy complicado. Por ejemplo digita en la celda A1 el valor de:
2103020302
Ahora en la celda B1 digita la siguiente fórmula (O cppia y pega)
="2.1.0"&IZQUIERDA(DERECHA(A1;LARGO(A1)-3);1)&"."&EXTRAE(DERECHA(A1;LARGO(A1)-3);2;2)&"."&EXTRAE(DERECHA(A1;LARGO(A1)-3);4;2)&"."&EXTRAE(DERECHA(A1;LARGO(A1)-3);6;2)
[Fijate en tu separador de argumento. Yo use punto y coma ";"]
Funciona con esa longitud de números. PEro pienso en poder hacer una UDF. Acabo de ver tu aclaración y trabajare a partir de ello.
No te preocupes
Christian
Hola Chistian
Si lo probé y claro funciona, pero así como tu me dices "solo con esa longitud de números"... si tengo una longitud más pequeña de números obviamente coloca los puntos de más así como lo indica la fórmula...
Muchas gracias y aquí sigo pendiente de tu gran ayuda!
Primero te agradezco tu paciencia e interés por el tema que deseas resolver. La fórmula anterior es valida para una longitud fija de dígitos. Hoy es viernes. Acabo de salir del trabajo y estoy en linea. Tengo muchas consultas que atender, entre las cuales esta la que tengo pendiente contigo. Con esto no quiero dar a entender que no deseo apoyarte por preferir a otros. Existen otras usuarios que necesitan de igual modo un apoyo
Descuida que de todos modos te daré una respuesta final, es decir la solución.
No te preocupes!
Christian
Lo prometido es deuda. ME comprometí en tu caso desde un inicio. Te agradezco tu paciencia sobre todo. Una excelente usuaria!
BUeno ahora te paso el código. LO he estado probando y funciona perfectamente. Sigue el siguiente procedimiento:
****
1.- Abre un nuevo libro de Excel y situate en Hoja1.
**
2.- Ahora haz ALT+F11. De esta manera se abrirá el Editor de VBA. Dirígete al Menu "Insertar / Modulo". Veras que aparecerá una ventana en blanco a la derecha. En esa ventana que no tiene nada copia y pega el siguiente código:
Function CPUNTOS(lacelda As Range)
Dim celda As Integer
celda = Len(lacelda) - 3
CPUNTOS = celda
Select Case celda
Case 1
CPUNTOS = "2.1.0" & Right(lacelda, 1)
Case 2
CPUNTOS = "2.1.0" & Mid(lacelda, 4, 1) & "." & Right(lacelda, 1)
Case 3
CPUNTOS = "2.1.0" & Mid(lacelda, 4, 1) & "." & Right(lacelda, 2)
Case 4
CPUNTOS = "2.1.0" & Mid(lacelda, 4, 1) & "." & Mid(lacelda, 5, 2) & "." & Right(lacelda, 1)
Case 5
CPUNTOS = "2.1.0" & Mid(lacelda, 4, 1) & "." & Mid(lacelda, 5, 2) & "." & Right(lacelda, 2)
Case 6
CPUNTOS = "2.1.0" & Mid(lacelda, 4, 1) & "." & Mid(lacelda, 5, 2) & "." & _
Mid(lacelda, 7, 2) & "." & Right(lacelda, 1)
Case 7
CPUNTOS = "2.1.0" & Mid(lacelda, 4, 1) & "." & Mid(lacelda, 5, 2) & "." & _
Mid(lacelda, 7, 2) & "." & Right(lacelda, 2)
Case 8
CPUNTOS = "2.1.0" & Mid(lacelda, 4, 1) & "." & Mid(lacelda, 5, 2) & "." & _
Mid(lacelda, 7, 2) & "." & Mid(lacelda, 9, 2) & "." & Right(lacelda, 1)
Case 9
CPUNTOS = "2.1.0" & Mid(lacelda, 4, 1) & "." & Mid(lacelda, 5, 2) & "." & _
Mid(lacelda, 7, 2) & "." & Mid(lacelda, 9, 2) & "." & Right(lacelda, 2)
Case 10
CPUNTOS = "2.1.0" & Mid(lacelda, 4, 1) & "." & Mid(lacelda, 5, 2) & "." & _
Mid(lacelda, 7, 2) & "." & Mid(lacelda, 9, 2) & "." & Mid(lacelda, 11, 2) & "." & Right(lacelda, 1)
Case 11
CPUNTOS = "2.1.0" & Mid(lacelda, 4, 1) & "." & Mid(lacelda, 5, 2) & "." & _
Mid(lacelda, 7, 2) & "." & Mid(lacelda, 9, 2) & "." & Mid(lacelda, 11, 2) & "." & Right(lacelda, 2)
Case 12
CPUNTOS = "2.1.0" & Mid(lacelda, 4, 1) & "." & Mid(lacelda, 5, 2) & "." & _
Mid(lacelda, 7, 2) & "." & Mid(lacelda, 9, 2) & "." & Mid(lacelda, 11, 2) & "." & _
Mid(lacelda, 13, 2) & "." & Right(lacelda, 1)
Case 13
CPUNTOS = "2.1.0" & Mid(lacelda, 4, 1) & "." & Mid(lacelda, 5, 2) & "." & _
Mid(lacelda, 7, 2) & "." & Mid(lacelda, 9, 2) & "." & Mid(lacelda, 11, 2) & "." & _
Mid(lacelda, 13, 2) & "." & Right(lacelda, 2)
Case 14
CPUNTOS = "2.1.0" & Mid(lacelda, 4, 1) & "." & Mid(lacelda, 5, 2) & "." & _
Mid(lacelda, 7, 2) & "." & Mid(lacelda, 9, 2) & "." & Mid(lacelda, 11, 2) & "." & _
Mid(lacelda, 13, 2) & "." & Mid(lacelda, 15, 2) & "." & Right(lacelda, 1)
Case 15
CPUNTOS = "2.1.0" & Mid(lacelda, 4, 1) & "." & Mid(lacelda, 5, 2) & "." & _
Mid(lacelda, 7, 2) & "." & Mid(lacelda, 9, 2) & "." & Mid(lacelda, 11, 2) & "." & _
Mid(lacelda, 13, 2) & "." & Mid(lacelda, 15, 2) & "." & Right(lacelda, 2)
Case 16
CPUNTOS = "2.1.0" & Mid(lacelda, 4, 1) & "." & Mid(lacelda, 5, 2) & "." & _
Mid(lacelda, 7, 2) & "." & Mid(lacelda, 9, 2) & "." & Mid(lacelda, 11, 2) & "." & _
Mid(lacelda, 13, 2) & "." & Mid(lacelda, 15, 2) & "." & Mid(lacelda, 17, 2) & "." & Right(lacelda, 1)
Case 17
CPUNTOS = "2.1.0" & Mid(lacelda, 4, 1) & "." & Mid(lacelda, 5, 2) & "." & _
Mid(lacelda, 7, 2) & "." & Mid(lacelda, 9, 2) & "." & Mid(lacelda, 11, 2) & "." & _
Mid(lacelda, 13, 2) & "." & Mid(lacelda, 15, 2) & "." & Mid(lacelda, 17, 2) & "." & Right(lacelda, 2)
Case 18
CPUNTOS = "2.1.0" & Mid(lacelda, 4, 1) & "." & Mid(lacelda, 5, 2) & "." & _
Mid(lacelda, 7, 2) & "." & Mid(lacelda, 9, 2) & "." & Mid(lacelda, 11, 2) & "." & _
Mid(lacelda, 13, 2) & "." & Mid(lacelda, 15, 2) & "." & Mid(lacelda, 17, 2) & "." & _
Mid(lacelda, 19, 2) & "." & Right(lacelda, 1)
Case 19
CPUNTOS = "2.1.0" & Mid(lacelda, 4, 1) & "." & Mid(lacelda, 5, 2) & "." & _
Mid(lacelda, 7, 2) & "." & Mid(lacelda, 9, 2) & "." & Mid(lacelda, 11, 2) & "." & _
Mid(lacelda, 13, 2) & "." & Mid(lacelda, 15, 2) & "." & Mid(lacelda, 17, 2) & "." & _
Mid(lacelda, 19, 2) & "." & Right(lacelda, 2)
Case 20
CPUNTOS = "2.1.0" & Mid(lacelda, 4, 1) & "." & Mid(lacelda, 5, 2) & "." & _
Mid(lacelda, 7, 2) & "." & Mid(lacelda, 9, 2) & "." & Mid(lacelda, 11, 2) & "." & _
Mid(lacelda, 13, 2) & "." & Mid(lacelda, 15, 2) & "." & Mid(lacelda, 17, 2) & "." & _
Mid(lacelda, 19, 2) & "." & Mid(lacelda, 21, 2) & "." & Right(lacelda, 1)
Case 21
CPUNTOS = "2.1.0" & Mid(lacelda, 4, 1) & "." & Mid(lacelda, 5, 2) & "." & _
Mid(lacelda, 7, 2) & "." & Mid(lacelda, 9, 2) & "." & Mid(lacelda, 11, 2) & "." & _
Mid(lacelda, 13, 2) & "." & Mid(lacelda, 15, 2) & "." & Mid(lacelda, 17, 2) & "." & _
Mid(lacelda, 19, 2) & "." & Mid(lacelda, 21, 2) & "." & Right(lacelda, 2)
Case Is > 21
CPUNTOS = "El codigo tiene mas de 21 digitos"
Case Is < 4
CPUNTOS = "El codigo tiene menos de 4 digitos"
End Select
End Function

'Copia Hasta aqui
3.- Ahora guarda los cambios. Guarda tu libro de Excel. Luego de ello dirigete al Menu "Herramientas / Macro / Seguridad". Allí especifica el Nivel Medio de Seguridad. Acepta y luego guarda los cambios realizados.
***
4.- La función que hemos creada se llama CPUNTOS, la manera de escribir tal función es igual como se haría con Ahora(), Si(), Buscarv(), Indirecto(), Hoy(), Y(), etc.
***
5.- Ahora dirígete a Hoja1. Escribe los siguientes códigos en las celdas indicadas:
A1: 2104567890
A2: 21045678901
A3: 210456789012
A4: 2104567890123
A5: 21045678901234
A6: 210456789012345678901234
**
Puedes ver que esta ultima (A6) es la más larga. Hasta aquí hasta esa longitud de datos he programado
 ***
6.- Ahora situate en la celda B1 de la misma hoja. En B1 ingresa la siguiente formula:
=CPUNTOS(A1)
Luego de ello arrastra la fórmula hasta B6.
7.- Los resultados son los deseados. Ahora trata de ingresar en la celdas A7 y A8 un numero de 3 dígitos solamente y otro que sea mayor de 21 dígitos. La fórmula te dará un aviso de ello.
***
La fórmula como había mencionado funciona. LO he probado para cada caso.
Espero haberte ayudado en tu caso. Quisiera que me confirmes si es lo que necesitas. Prueba la función y si hay algo que hacer avisame. Pero creo que esto te ayudara enormemente.
Si después de ello no hay problemas, te pediría que pases a finalizar y puntuar al final de esta página
Miiiiill Graciaaaass Chistian...eres un experto de verdad!!! la formula me funciona correctamente, la verdad no se que hubiera hecho sin tu enorme ayuda...eres un genio, no dudare en consultarte si tengo nuevas inquietudes, eres mi favorito...gracias nuevamente!!!!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas