URGENTE. Personalizar códigos.

Hola fejoal,
Tengo unos códigos de productos los cuales coinciden en las siete primeras cifras, cambiando solamente las seis últimas.Por ejemplo estos dos códigos :8410652300496,8410652115052.
Lo que quiero saber es cómo fijar el número en que coinciden, para sólo escribir el resto.
Gracias por la ayuda.
Espero tu respuesta, es urgente. Tengo una lista interminable de códigos.
1

1 respuesta

Respuesta
1
OK. Hay un par de soluciones para esta tarea:
a.- Manual
Ingresa las seis ultimas cifras en tu columna.
Luego escribe en una celda libre el siguiente número:
8410652000000
Copia esta celda.
Selecciona el rango donde ingresaste los códigos de 6 cifras.
Haz Click en "Edición" | "Pegado Especial..." y marca las opciones "Valores" y "Sumar". Presiona "Aceptar"
Y tendrás el código completo en aquellas celdas.
Desde luego esto mismo podría hacerse con una simple fórmula de suma, como por ejemplo
=8410652000000+A2
Donde la celda con el código de 6 números está en A2.
b.- programado en Visual Basic
Con algunos matices, esta solución hará algo similar, sólo que será automático, apenas ingreses el código de seis cifras
Para que funcione, activa el editor de Visual Basic (presiona Alt+F11) y busca la hoja donde quieres que esto ocurra (donde harás la carga de datos). Da doble click sobre ella. (Otra forma de llegar a este punto es hacer click derecho sobre la solapa de esta hoja y elegir la opción "Ver Código)
Borra cualquier cosa que aparezca escrita en ese panel, copia el código siguiente y pégalo en el panel desplegado a la derecha de su Editor de Visual Basic:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
' Ingresa Valor fijo:
Vfijo = 8410652
'cantidad digitos variables:
DigVar = 6
'y el rango donde debe ocurrir:
RangoCod = "B2:B20000"
'---------------------- gracias!
If Not Intersect(Target, Range(RangoCod)) Is Nothing Then
Application.EnableEvents = False
If IsNumeric(Target.Value) Then Target.Value = Target.Value + Vfijo * 10 ^ DigVar
Application.EnableEvents = True
End If
End Sub
'--- (hasta aquí)
Notarás que al inicio del código hay tres variables que dan flexibilidad a la macro. Puedes cambiar el número fijo inicial, la cantidad de dígitos variables y el rango donde quieres que la macro opere.
Esto es importante para que puedas ingresar valores en otras celdas de tu hoja sin que agregue aquél numero inicial.
Cierra el Editor de Visual Basic y graba el archivo.
A partir de ahora, en esa hoja y en el rango indicado, cada numero ingresado será completado por la macro apenas presones Enter.
Desde luego, las macros deben estar habilitadas para que esto funcione.
Espero que esto te ayude y que haya llegado a tiempo.
°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
A cambio de mi tiempo, sólo te pido dos cosas:
- Finaliza (con puntaje y comentario) esta pregunta
- Ingresa al sitio www.porloschicos.com y, si quieres,
presiona el botón de donación (es gratis).
Confío en que lo harás.
Dada la dimensión del número, si la celda tiene un formato General, probablemente intente mostrarlo en notación científica.
Bastará que des formato de "Número" (sin comas ni decimales) a la celda.
En el caso de usar VBA deberías agregar una instrucción que dé formato a la celda. Esta es:
Target.NumberFormat = "0"
Por lo tanto aquella macro propuesta quedaría como sigue:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
' Ingresa Valor fijo:
Vfijo = 8410652
'cantidad digitos variables:
DigVar = 6
'y el rango donde debe ocurrir:
RangoCod = "B2:B20000"
'---------------------- gracias!
If Not Intersect(Target, Range(RangoCod)) Is Nothing Then
Application.EnableEvents = False
If IsNumeric(Target.Value) Then Target.Value = Target.Value + Vfijo * 10 ^ DigVar
Target.NumberFormat = "0"
Application.EnableEvents = True
End If
End Sub
Mi respuesta fue URGENTE como solicitabas. Lamentablemente, tu interés por finalizarla no lo es tanto.
Buenas, Eduardo!
Me interesaría saber si la solución te fue útil. Si así fuera, por favor, finaliza esta pregunta.
Recuerda que el hecho de mantener respuestas sin finalizar impide que otros usuarios puedan consultarme.
Un abrazo!
Fernando

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas