MACRO “numerador” de datos con prefijo y correlativo (un contador de filas)

Dante Amor, tengo varios archivos (kardex de varios meses), a estos archivos les quiero insertar en la columna “A” una columna llamada “ITEM” que me sirve como numerador de datos, con las siguientes características o partes:

1ra parte del “numerador” es un prefijo (que es la parte fija), que para el ejemplo es “KX01”, pero quizás pueda ser una palabra que identifique el tipo de datos que quiero numerar como por ejemplo “alumnos” si los datos corresponden a una relación de alumnos, o quizás “obreros” si los datos una relación de obreros.

1ra parte de la MACRO, ¿qué pregunte que prefijo vas a usar? Para el ejemplo es “KX01”

2do parte de la MACRO, ¿qué pregunte cuantos dígitos a tener numerador? Para el ejemplo son 6 dígitos, osea el 1er numero es “000001” (oseas 1 con 5 ceros para que el numerador tenga los 6 dígitos), quizás no sea necesario poner el numero de dígitos sino solo poner como respuesta “000001”, asumiendo que con ese dato el siguiente numero que que se asigne sea “000002” y así sucesivamente hasta llegar al ultimo dato que para el ejemplo tiene como casillero llenado la celda “B103” osea la celda “B104” esta “vacía”

Si doy como respuesta “0” el 1er numero será “1” (en este caso no llenara ceros)

Ejemplo de llenado del numerador en la columna “A”

El numerador empieza en fila 3

1er numero ---à KX01 – 000001

Hasta la ultima fila que contenga datos, ejemplo si el archivo contiene 100 filas o datos

Ultimo numero --à KX01 - 000100

Para otro archivo que corresponde a datos del kardex de febrero empezaran con el numerador

“KX02 – 000001”, y así sucesivamente.

1 Respuesta

Respuesta
2

Te anexo 2 opciones, cualquiera de las 2 realiza la numeración:

Opción 1, con ciclo:

Sub Numerar()
'Por.Dante Amor
    Application.ScreenUpdating = False
    pre = InputBox("Prefijo de la numeración", "NUMERADOR")
    If pre = "" Then Exit Sub
    dig = InputBox("Cantidad de dígitos", "NUMERADOR")
    If dig = "" Or dig = 0 Then Exit Sub
    If Not IsNumeric(dig) Then Exit Sub
    '
    u = Range("B" & Rows.Count).End(xlUp).Row
    n = 1
    For i = 3 To u
        Cells(i, "A") = pre & Format(n, String(dig, "0"))
        n = n + 1
    Next
End Sub

Opción 2, con rellenar:

Sub Numerar2()
'Por.Dante Amor
    Application.ScreenUpdating = False
    pre = InputBox("Prefijo de la numeración", "NUMERADOR")
    If pre = "" Then Exit Sub
    dig = InputBox("Cantidad de dígitos", "NUMERADOR")
    If dig = "" Or dig = 0 Then Exit Sub
    If Not IsNumeric(dig) Then Exit Sub
    '
    u = Range("B" & Rows.Count).End(xlUp).Row
    n = 1
    [A3] = pre & Format(n, String(dig, "0"))
    [A3].AutoFill Destination:=Range("A3:A" & u)
End Sub


En cualquier opción en cantidad de dígitos debes poner el número de ceros que necesitas, ejemplo: 001, tienes que poner el número 3.

S a l u d o s . D a n t e   A m o r

Recuerda valorar la respuesta.

¡Gracias! Eres un genio es justo que quería, solo una cosa la segunda macro es más rápida que la primera lo único malo es que no hace el conteo correlativo ejemplo

Puse prefijo "2" y numerador "6" dígitos y salio como resultado en todas las líneas hasta terminar la base de datos "2000001".

Cuando debería haber salido como resultado "2000001", "2000002", y así sucesivamente hasta terminar con todas las filas

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas