Insertar Filas

11/05/2008 - 05:07 por HMS | Informe spam
Hola a tod@s!
Tengo una Base datos con 50 filas distintas (Nombres de productos) y 8
columnas.
Pero quiero insertar 5 filas en Blanco, entre cada una de las filas.
Podrían indicarme las formas de hacer este ejercicio (Macros,
Procedimiento, o Formulación)?
De antemano gracias
HMS
 

Leer las respuestas

#1 Héctor Miguel
11/05/2008 - 07:10 | Informe spam
hola, "tocayo " !

... una Base datos con 50 filas... quiero insertar 5 filas en Blanco, entre cada una
... indicarme las formas de hacer este ejercicio (Macros, Procedimiento, o Formulacion)?



suponiendo que las ~50 filas con datos estan desde la fila 1 a la 50 -?-
se entiende que la primer fila "se queda donde esta" y las nuevas se insertan desde la fila 2 hasta la n_ultima
estoy usando una variable (en plural: Filas = <numero>) para las filas a insertar (por si necesitas modificarla)

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.

1) el siguiente ejemplo "avanza en reversa" (n_ultima hasta 2) ampliando n_Filas cada vez para insertarlas
por lo que la accion de insertar filas se repite n_veces (el total de filas en el rango menos 1: 49 segun tu consulta)

Sub Inserta_n_Filas_Intercaladas()
Dim Fila As Integer, Filas As Byte
Filas = 5
Application.ScreenUpdating = False
For Fila = 50 To 2 Step -1 ' <= OJO: desde la ultima hasta la segunda del rango '
Range("a" & Fila).Resize(Filas).EntireRow.Insert
Next
End Sub

2) con la siguiente variacion, la accion de insertar filas se repite (solamente) las n_Filas a insertar (Filas = <numero>)
por lo que la ejecucion debiera ser "sensiblemente" mas rapida (solo 5 acciones de insercion, segun tu consulta)

Sub Inserta_n_Filas_Intercaladas()
Dim Fila As Integer, Filas As Byte, Rango As String, n As Byte
Filas = 5
Application.ScreenUpdating = False
For n = 1 To Filas
Rango = ""
For Fila = 2 To 50 ' <= OJO: desde la segunda fila hasta la ultima del rango '
Rango = Rango & ",a" & Fila + ((n - 1) * (Fila - 4))
Next
Range(Mid(Rango, 2)).EntireRow.Insert
Next
End Sub

3) el siguiente ejemplo es "similar" al anterior (en rapidez) solo que se basa en el supuesto (o entendido) de que:
a) las ~50 filas iniciales NO contienen celdas vacias en el medio
b) estamos hablando de la columna "A"
c) que el contenido de las celdas es "constante" (por si hubiera que cambiar a xlCellTypeFormulas)

Sub Inserta_n_Filas_Intercaladas()
Dim Rango As String, Filas As Byte, n As Byte
Filas = 5
For n = 2 To 50
Rango = Rango & ",a" & n
Next
Application.ScreenUpdating = False
Range(Mid(Rango, 2)).EntireRow.Insert
For n = 2 To Filas
Range(Range("a6"), Range("a65536").End(xlUp)) _
.SpecialCells(xlCellTypeConstants).EntireRow.Insert
Next
End Sub

Preguntas similares