¿Crear macro para llenar columna en Excel con números consecutivos reiniciando a 1 al llegar a un numero limite y regresar a 1?

Anteriormente había hecho una pregunta parecida donde me ayudaron a resolver mi problema cuando decidí crear un listado de números consecutivos a partir de un numero definido hasta un numero limite y reiniciar por ejemplo se comienza a llenar desde 1 hasta 50 y el siguiente valor es 1 así hasta un numero de fila también definido por el usuario, el código que me compartieron fue el siguiente:

Sub CONSECUTIVO()'x Elsamatilde'se llena la col A a partir de fila 2.ini = 13'se llena hasta llegar a la fila indicada en D1 - AJUSTARWhile ini <= Range("D1")'el consecutivo llega hasta el valor indicado en C1 - AJUSTARFor i = 1 To Range("C1")'se coloca el nro consecutivo y se incrementa la variableRange("A" & ini) = iini = ini + 1'se controla si llegó a la fila máximaIf ini > Range("D1") Then Exit ForNext i'se repite el bucle For si aún no llegó a la fila máximaWendEnd Sub

el codigo me sirvio a la perfeccion, en base a este codigo que amablemente Elsa Matilde me compartio me gustaria que me ayudaran a poder adaptarlo para que ahora pueda hacer lo siguiente:

1

2

3 ...

50

49

48

47...

1

2

3...

En el código anterior cuando el listado llegaba al numero limite en este caso 50 el siguiente valor era 1 osea el valor inicial, ahora lo que intento es que el siguiente valor sea 49 de modo que vaya descendiendo hasta 1 y vuelva a comenzar, que comience desde 1 hasta el 50 y después regrese a 1 pero de forma descendente y después vuelva a incrementar hasta 50 así hasta la fila definida por ejemplo 500.

El valor inicial, el valor limite consecutivo y la fila limite del listado están definidos en celdas.

Respuesta
2

Te anexo la macro actualizada

Si quieres esto 49, 50, 49, 48... 1, 1, 2,... En este caso el número 1 se repite. Utiliza la siguiente macro:

Sub CONSECUTIVO()
'x Elsamatilde
    'se llena la col A a partir de fila 2.
    ini = 13
    'se llena hasta llegar a la fila indicada en D1 - AJUSTAR
    n = 1
    While ini <= Range("D1")
        'el consecutivo llega hasta el valor indicado en C1 - AJUSTAR
        For i = n To Range("C1")
            'se coloca el nro consecutivo y se incrementa la variable
            Range("A" & ini) = i
            ini = ini + 1
            'se controla si llegó a la fila máxima
            If ini > Range("D1") Then Exit For
        Next i
        'se repite el bucle For si aún no llegó a la fila máxima
        For i = Range("C1") - 1 To 1 Step -1
            'se coloca el nro consecutivo y se incrementa la variable
            Range("A" & ini) = i
            ini = ini + 1
            'se controla si llegó a la fila máxima
            If ini > Range("D1") Then Exit For
        Next i
        n = 1
    Wend
End Sub

Si quieres que sea así: 49,50,49,48...1,2,3... Entonces utiliza esta macro.

Sub CONSECUTIVO()
'x Elsamatilde
    'se llena la col A a partir de fila 2.
    ini = 13
    'se llena hasta llegar a la fila indicada en D1 - AJUSTAR
    n = 1
    While ini <= Range("D1")
        'el consecutivo llega hasta el valor indicado en C1 - AJUSTAR
        For i = n To Range("C1")
            'se coloca el nro consecutivo y se incrementa la variable
            Range("A" & ini) = i
            ini = ini + 1
            'se controla si llegó a la fila máxima
            If ini > Range("D1") Then Exit For
        Next i
        'se repite el bucle For si aún no llegó a la fila máxima
        For i = Range("C1") - 1 To 1 Step -1
            'se coloca el nro consecutivo y se incrementa la variable
            Range("A" & ini) = i
            ini = ini + 1
            'se controla si llegó a la fila máxima
            If ini > Range("D1") Then Exit For
        Next i
        n = 2
    Wend
End Sub

Saludos.Dante Amor

Recuerda valorar la respuesta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas