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

Preguntas similare

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
Respuesta Responder a este mensaje
#2 Héctor Miguel
11/05/2008 - 07:16 | Informe spam
hola (de nuevo), "tocayo " ! (fe de erratas) :-((

para la alternativa #3 cambia una linea al final del codigo:

de: -> Range(Range("a6"), Range("a65536").End(xlUp)) _
a: -> Range(Range("a2"), Range("a65536").End(xlUp)) _

saludos,
hector.
Respuesta Responder a este mensaje
#3 HMS
12/05/2008 - 19:50 | Informe spam
On 10 mayo, 23:16, "Héctor Miguel"
wrote:
hola (de nuevo), "tocayo " !    (fe de erratas)    :-((

para la alternativa #3 cambia una linea al final del codigo:

de: -> Range(Range("a6"), Range("a65536").End(xlUp)) _
  a: -> Range(Range("a2"), Range("a65536").End(xlUp)) _

saludos,
hector.



Gracias Tocayo !!
Te agradezco tu respuesta !!
Todo EXCELENTE !!
HMS
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida