Eliminar filas con macro

Tengo una tabla con el número de alumnos de una escuela. En la 1º columna está el curso (1º Año, 2º Año, etc.), en la 2º columna, está la cantidad de varones, en 3º la cantidad de mujeres y en la 4º el total. Mi duda es si se puede hacer una macro que detecte cuando el total de alumnos de un curso (varones+mujeres) sea 0 (no hay alumnos en ese curso)y automáticamente elimine esa fila. Al final de la tabla, se deben insertar tantas filas como se hayan eliminado.

2 respuestas

Respuesta
1
Ok, te he preparado la siguiente macro, que creo es lo que estás buscando:
Sub EliminarFilas()
Range("D1").Activate
Dim contador
Dim i
contador = 0
While ActiveCell.Value <> ""
If ActiveCell.Value = 0 Then
ActiveCell.EntireRow.Delete
contador = contador + 1
Else
ActiveCell.Offset(1, 0).Activate
End If
Wend
For i = 1 To contador
ActiveCell.EntireRow.Insert
Next
End Sub
Como ves, es prácticamente igual que la anterior, solo que se ha introducido un contador para luego insertar las filas. Lo dicho: si aún queda algo por hacer, dímelo y lo terminamos. Si finalicé la pregunta.
la macro funciona de maravilla.Sólo restaría que debajo de la tabla se agregaran tantas filas como se eliminaron por la macro.Por ej. si se eliminaron 4 filas con cursos sin alumnos(=0), debajo de la tabla se agreguen 4 filas vacias.Espero que me hayas entendido.Pero desde ya muchas gracias por tu atención.
¿Cómo va todo? Bueno, te agradezco que confíes en mí para realizar tu pregunta. Creo que he entendido toda tu pregunta, salvo lo de que se inserten tantas filas como se hayan eliminado. Te he preparado la siguiente macro, que espero te sirva, y me dices qué le falta, ¿Ok? Para ello supongo lo siguiente: en la columna A está el curso. En la columna B los hombres, en la C las mujeres, y en la DE el total.
Sub EliminarFilas()
Range("D1").Activate
While ActiveCell.Value <> ""
If ActiveCell.Value = 0 Then
ActiveCell.EntireRow.Delete
Else
ActiveCell.Offset(1, 0).Activate
End If
Wend
End Sub
Esta macro va bajando, y eliminando todas las filas en las que el total de la columna sea 0. Espero te sirva, si es así, por favor, no olvides finalizar la pregunta. Si hay algo que faltó o que no entendí, vuelve a preguntarme y con gusto te ayudo.
Respuesta
1
Vamos al tema... puedes utilizar esta macro:
Sub Quitar()
Dim Fila As Integer
For Fila = 2 To 100
If Not IsEmpty(Range("A" & Fila)) And Range("D" & Fila).Value = 0 Then
Rows(Fila & ":" & Fila).Select
Selection.Delete Shift:=xlUp
Range("A1").Select
Selection.End(xlDown).Select
ActiveCell.Offset(1, 0).Select
Selection.EntireRow.Insert
End If
Next Fila
End Sub
Lo que hace el IF es comprobar en cada fila la primera celda de la tabla (columna A) y la última (Columna B). Si la primera no está vacía y la última tiene valor=0 entonces elimina la fila e inserta una al final.
Bueno, ya me contarás. Si no te funciona o necesitas alguna aclaración no dudes en continuar la pregunta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas