Utilidad de macros en filas

Hola, necesito ayuda!! Lo que trato de hacer con el excel es lo siguiente;

Quiero que haya diez líneas entre cada primer valor, pongo un ejemplo;

A1; referencia_100

A2; referencia_100

A3; referencia_100

A4; (vacío)

y así hasta la fila A9.

Después en la fila A10, A11; referencia_101 y quiero que inserte filas vacías hasta A19.

Siempre deberé tener 10 filas para cada referencia (aunque ocupen solo dos, tres ó más)

PD: espero haberme explicado con exactitud.

Ante todo, muchas gracias!!.

1 respuesta

Respuesta
1

Te mando mi solución, sigue mi ejemplo:

Tenemos tus datos en la columna A desde A1 hacia abajo e inicialmente los tenemos todos juntos sin filas en blanco.

-Primero ordena alfabéticamente la columna para que estén agrupadas las referencias.

-Después de ordenar solo tienes que ejecutar esta macro:

Sub prueba()
'por luismondelo
Range("a65000").End(xlUp).Offset(1, 0).Value = "final"
Do While ActiveCell.Value <> "final"
valor = ActiveCell.Value
contarsi = Application.WorksheetFunction.CountIf(Columns(1), valor)
If contarsi < 10 Then
filas = 10 - contarsi
Do While ActiveCell.Value = valor
ActiveCell.Offset(1, 0).Select
Loop
End If
For x = 1 To filas
ActiveCell.EntireRow.Insert
Next
ActiveCell.End(xlDown).Select
Loop
End Sub

recuerda finalizar la consulta

Buenas tardes, Luís.

Se me presenta un error, cuando lleva realizada la mitad de la lista aprox. comienza a insertar espacios en blancos sin límite. me gustaría poder adjuntarte el excel para que lo pudieras visualizar. Te adjunto mi correo: [email protected]

A la espera de tu respuesta, muchas gracias.

[email protected]

Mándame solo esa hoja con los datos anotados en la columna A

Hola Luís, la formula que me has presentado en el primer comentario es correcta, lo único es que cuando un valor tiene más de diez filas, comienza un bucle insertando filas vacías. Para curarme en salud voy a poner 20 filas para que no suceda este error, supongo que cambiando los valores de diez a veinte sera suficiente, no??? muchas gracias, por tu colaboración.

PD: a la espera de tu respuesta.

Un saludo,

Francisco.

Para arreglar eso la macro quedaría así:

Sub prueba()
'por luismondelo
Range("a65000").End(xlUp).Offset(1, 0).Value = "final"
Do While ActiveCell.Value <> "final"
valor = ActiveCell.Value
contarsi = Application.WorksheetFunction.CountIf(Columns(1), valor)
If contarsi < 10 Then
filas = 10 - contarsi
Do While ActiveCell.Value = valor
ActiveCell.Offset(1, 0).Select
Loop
Else
Do While ActiveCell.Value = valor
ActiveCell.Offset(1, 0).Select
Loop
GoTo salto
End If
For x = 1 To filas
ActiveCell.EntireRow.Insert
Next
ActiveCell.End(xlDown).Select
salto:
Loop
ActiveCell.ClearContents
End Sub

Luís, muchas gracias por prestarme un poco de tus conocimientos sobre excel, al final he decidido insertar 20 filas, ya que de otra forma me podía crear conflictos con el resto de columnas.

De nuevo, muchas gracias por todo.

Francisco.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas