none
¿Cómo crear macro para llenar columna en Excel con números consecutivos reiniciando a 1 al llegar a un numero limite? RRS feed

  • Pregunta

  • Hola a todos muchas gracias por su apoyo estoy aprendiendo a programar en visual basic y por ahora estoy atorado en algo simple pero que no he logrado que funcione, lo que intento hacer es llenar una columna con números consecutivos comenzando por una celda por ejemplo A13 a partir de ahí que comience a llenar las celdas desde 1, 2, 3... Hacia abajo, en una celda tengo capturado el numero 50 y lo que intento hace es que cuando la numeración llegue a 50 reinicie la numeración desde 1, también en otra celda tengo escrito el numero 500 y quiero usarlo como referencia para que ese sea el numero de fila en donde termine de hacer el llenado, espero me haya podido explicar. muchas gracias y Saludos Cordiales
    • Editado Vilag martes, 9 de junio de 2015 20:05
    martes, 9 de junio de 2015 19:59

Todas las respuestas

  • Hola Vilag,

    Intenta hacer lo siguiente:

    Dim Fila As Integer
        Dim Columna As String
        
        Columna = "A"
        Fila = 1
        
        Range(Columna & Fila).Select
        
        Do While (ActiveCell.FormulaR1C1 <> "500")
            
            Range(Columna & Fila).Select
            
            If ActiveCell.FormulaR1C1 = 50 Then
                Fila = 1
            End If
            
            ActiveCell.FormulaR1C1 = Fila
            
            Fila = Fila + 1
        Loop

    Si la solución propuesta atendió su consulta no olvide marcarla como respuesta.

    Willams Morales
    Arequipa - PERÚ

    martes, 9 de junio de 2015 20:36
  • Que tal William, muchas gracias por tu respuesta lo use y lo que hace es crear un consecutivo desde 1 hasta el 500 y lo que intento hacer es generar numeros del 1 al 50 y reiniciar a 1 asi hasta la fila 500.

    1

    2

    3...

    50

    1

    2

    3...

    50

    Saludos

    miércoles, 10 de junio de 2015 13:43
  • Hola:

    Prueba esto, que te llena a partir de la celda que tengas activada:

    Dim nRows As Integer, nMaxValue As Integer
    nRows = 500
    nMaxValue = 50
    
    ActiveCell.Resize(nRows).FormulaLocal = "=1+RESIDUO(FILA()-" & ActiveCell.Row & ";" & nMaxValue & ")"
    
    ' Esto es opcional, pasamos la formula a valores.
    Activecell.Resize(nRows).Copy
    ActiveCell.PasteSpecial xlPasteValues 

    Como puedes comprobar, es una formula (con el separador de argumentos ;) que la podrías usar incluso sin 'macros', espero que te sirva.

    Un saludo


    • Editado LG DES miércoles, 10 de junio de 2015 14:35
    • Propuesto como respuesta LG DES lunes, 15 de junio de 2015 7:40
    miércoles, 10 de junio de 2015 14:08
  • Muchas gracias por sus respuestas.

    Saludos Cordiales

    viernes, 12 de junio de 2015 20:51