Excel: Una macro para insertar filas en listas muy largas

Un truco ideal para los que manejan una lista de datos muy larga y necesitan insertar una fila en blanco entre registro y registro.
SAB, 7 / SEP / 2013

Supongamos que el primer registro está en la fila [2] de la hoja (con títulos en la primera fila) y que la primera fila en blanco se debe insertar entre los dos primeros registros. O sea, por encima de la fila [3]. En ese caso, la macro podría ser algo así:

Sub insertar()
f = 3
Do While Not IsEmpty(Cells(f, “A”))
    Cells(f, “A”).EntireRow.Insert
    f = f + 2
Loop
End Sub

Esta macro recorre la lista de la izquierda, mientras encuentre celdas ocupadas, e inserta una fila en blanco entre nombre y nombre.

Esta macro recorre la lista de la izquierda, mientras encuentre celdas ocupadas, e inserta una fila en blanco entre nombre y nombre.

Lo difícil en este problema es controlar exactamente la posición de las filas por insertar. La macro tiene un ciclo Do While… Loop que continúa mientras haya filas con datos. Controlamos esa condición con la función IsEmpty (“está vacía”). Tras cada inserción, la macro baja dos filas: una para superar la fila en blanco que acaba de insertar y otra para pasar a la siguiente fila de datos.

Por ejemplo, supongamos que la macro está trabajando en la fila [10]. Al insertar una fila en blanco, la macro permanece en esa fila, ahora en blanco, y el dato que estaba en la fila [10] ahora está en la [11]. A continuación, la macro debe insertar una nueva fila en blanco entre las filas [11] y [12]. Para eso debe bajar a la fila [12], dos respecto de la posición anterior.

Comentarios
¡Comparte esta noticia!

Últimos lanzamientos Ver más

7 Comments

  1. Gutti dice:

    aparece error en esta instrucción…

    Do While Not IsEmpty(Cells(f, “A”))

  2. jose dice:

    Estimado Leoncio.
    Me sirvio mucho tu macro, te cuento tengo unos registros de 100,000 filas con codigos repetidos, cuando cambia el codigo necesito insertar 4 filas, tu macro me sirvió muy bien , sin embargo a partir de la fila 30,000 salió un error dice ” error , desbordamiento en tiempo de ejecución”, averiguando encontré algo como esto para solucionarlo “asigne el valor a una variable de un tipo que pueda contener un intervalo más amplio de valores”, nose de programación, espero puedas ayudarme.

  3. John Delgado dice:

    Hola amigo tu macro si funciona, pero dime como se puede modificar para que la fila que inserte sea a través de una condicional, me explico en la columna “A” tengo una lista enorme de fechas y quiero poder insertar una fila cada vez que cambie la fecha, es decir de la fila 1 a la 20 es 01/01/2016 y de la 21 a la 25 es 02/01/2016 y así sucesivamente, yo lo hago a través de un pequeño artilugio que encontré en esta pagina (http://lareboticadeexcel.blogspot.pe/2013/08/insertar-filas-intercaladas.html), pero a veces la lista es tan grande y es bastante trabajoso por eso quería simplificar esta labor, gracias por tu apoyo y tiempo en leer al menos mi inquietud.

  4. Jose Cruz Alejandro Mendez Gon dice:

    Si queremos hacer lo contrario, es dcir mientras existan celdas vacias?

  5. leoncio44 dice:

    Modificando un poquito el código se pude hacer que inserte el número de filas en blanco que necesitemos y que no dé el error que comentan más abajo. Probado en Office2010

    Option Explicit
    Sub insertar_cuatro_lineas()
    Dim f As Integer
    Dim nfilas As Integer
    Dim i As Integer

    f = 4 ‘fila inicial
    nfilas = 4 ‘numero de filas en blanco a introducir

    Do While Not IsEmpty(Cells(f, 1))
    For i = 1 To nfilas
    Cells(f, 1).EntireRow.Insert
    Next i
    f = f + nfilas + 1
    Loop
    End Sub

    Espero de sea de utilidad.

    =:)

  6. maria astudillo dice:

    hola tengo un problema necesito organizar una fila con números consecutivos pero saltado ejemplo 1,2,3, 5,6,7,8, 9,10,11 , 15 y la idea es que en el momento que salta colocar una fila en blanco… ejemplo . entre numero grupos de números no hay un grupo definido ejemplo entre el primer grupo organizado ejemplo del 1 al 3 solo hay tres numero luego se salta el 4 (en la casilla del cuatro debería tener una casilla en blanco) y empieza de nuevo con el 5 y termina hasta el 11 en ese grupo hay 5 números saltan nuevamente (en la casilla del cuatro debería tener una casilla en blanco) y comienza con 15. hay alguna formula donde en los salto de numero se rellene con una casilla en blanco

  7. Marca error en: Do While Not IsEmpty(Cells(f, “A”))

Leave a Reply