Eliminar filas vacías en Excel
En ocasiones necesitamos eliminar en Excel aquellas filas vacías que se encuentran en nuestros listados de productos, personas, etc.
Muchas veces debemos eliminar algún dato de nuestras hojas de cálculo, quedando una fila vacía, la cual tenemos que buscar manualmente y eliminar manualmente algo que no será muy cómo si se trata de listados grandes.
Pues bien, este proceso lo podemos hacer de forma automática, mediante una Macro, quien se encargara de revisar las filas que se encuentren vacías y proceder a eliminarlas.
Para ello vamos a la barra de herramientas, elegimos Macro, Editor de Visual Basic.
Una vez tengamos el editor de visual abierto, vamos al menú Insertar y elegimos Insertar modulo, y allí pegamos el siguiente código:
Sub eliminarfilavacia()
For fila = 1 To 65536
If Cells(fila, 4).Value = "0" Then
Rows(fila).Delete
End If
Next fila
End Sub
Luego le damos guardar en la barra de menú o presionamos las teclas Ctrl + S
Ya tenemos nuestra aplicación para que haga el trabajo por nosotros.
Para ejecutar la macro o iniciar el proceso, vamos al menú Herramientas, elegimos Macro, Macros.
Allí nos aparece el listado de macros que tenemos, seleccionamos la que necesitamos y le damos Ejecutar.
Otra forma de buscar las macros es presionando las teclas Alt + F8 al tiempo.
Podemos también crear un botón que al darle Clic nos ejecute la macro.
Para ello, vamos al menú Ver, Barras de herramientas, Formularios.
En la barra de formularios elegimos la opción Botón, y lo colocamos en la parte de la pantalla que deseemos, y nos aparecerá el listado de macros existentes. Luego seleccionamos la macro que se ejecutará al presionar el botón.
Solo resta colarle un nombre al botón para identificarlo.
Actualización
Como está el código de la macro, elimina las filas que tengan el valor 0 (cero).
Para eliminar las celdas vacías el código es el siguiente:
Sub eliminarfilavacia()
For fila = 1 To 6000
If Cells(fila, 4).Value = "" Then
Rows(fila).Delete
End If
Next fila
End Sub
Tenga en cuenta que en la macro debe definir el rango de filas a revisar, rango que debe estar entre la primera fila ocupada hasta la última fila ocupada [en el ejemplo el rango va hasta la fila 6000], puesto que si de deja hasta la fila 65536 puede significar que la macro se ejecute indefinidamente y no sea posible cerrar la aplicación ni guardar el archivo.


Sin macros:
Seleccionar la columna o fila que contenga celdas en blanco. F5-Ir a/Especial/Celdas en blanco-Aceptar (se habrán seleccionado las celdas en blanco) Eliminar filas.
Genial!!! :-) Muchas gracias
la macro eliminar celdas con valor 0, no me borra automaticamente mis celdas con valor 0. ejemplo si tengo 5 filas seguidas me borra 2 o 3, pero no las 5. tendre que ejecutar el comando una y otra ves siempre?
Tome la macro y coloque en mi archivo de excel, la macro se llama
eliminar filas con valor 0
.
entonces al ejecutar la macro, no me borra todas las filas en las que detecta el numero 0, tengo que ejecutar la macro 5 veces en mi archivo de 62 articulos. tengo un error? o siempre voy a estar ejecutando la macro?, espero me puedan ayudar gracias
Este código es más rapido, ya que no utiliza boucles.
http://o-cruzg.blogspot.com/2011/04/como-eliminar-celdas-en-blanco-de-una.html
COMO PUEDO ELIMINAR VARIAS FILAS DE DIFERENTES HOJAS A LA VES PUEDO INSERTAR AL GUN BOTON Q DIGA BORRA Y ASI SE BORREN AUTOMATICO TODO ES MUY TEDIOSO HACERLO HOJA X HOJA GRACIAS AGRADESERIA SI M DIERAN AL GUN TUTO PARA PODER HACERLO
Marco,
Utiliza este Código, Cambia la Columna “A” por la que necesites.
Option Explicit
‘OCruzG Excel VBA Developers
‘www.o-cruzg.blogspot.com
‘ocruzgvba@gmail.com
Sub EliminarCeldas()
Dim i&, x%
For i = 1 To ThisWorkbook.Worksheets.Count
With Worksheets(i)
On Error Resume Next
x = .Range(“A65536″).End(xlUp).Row
.Cells.Range(“A1:A” & x).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End With
Next i
End Sub
primero deberia aprender a escribir, y no en Mayusculas sostenidas, que ortografia…..
Buenas tardes comunidad gerencie,
Líneas abajo envío mi aporte al código inicial, esta soluciona el inconveniente que se presentaba y adicional su tiempo de ejecución es más rápido ya que identifica cuantas cedas estan vacías y no corre una por una como la incial “For fila = 1 To 6000”. También con este desarrollo en los campos del código de celda en blanco lo pueden reemplazar para que elimine algún otro carácter diferente ya sea cuenta, nombre o valor etc, recuerden que inicia en la ceda A1 y busca en toda la selección A:A. espero les sea útil
Feliz dia.
Andres Avila
Contador Publico
______________________________________________
Sub eliminarfilavacia1()
Application.ScreenUpdating = False
Dim Range_for, Columns_for, Countif
Cells(1, 1).Select
Selection.CurrentRegion.Select
Range_for = Selection.Rows.Count
Range(“IV1″).Select
ActiveCell.FormulaR1C1 = “=COUNTIF(RC[-255]:R” & Range_for & “C[-255],”"”")”
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Countif = ActiveCell.Value
For i = 1 To Countif
For fila = 1 To Range_for
If Cells(fila, 1).Value = “” Then
Rows(fila).Delete
End If
Next fila
Next
Cells(1, 1).Select
Application.ScreenUpdating = True
End Sub
Hola la pagina la encontre por casualidad , ya que tengo un problema con una macro, el problema esta en que una informacion que tengo en una hoja, debo buscar unos codigos y eliminar de la hojas estos codigos y toda su informacion. Lo habia realizado haciendo un filtro y eliminandos las celdas que tenian este codigo pero si estos codigo llegan a aumentar o disminuir me afectaria otros codigos. Espero haberme explciado bien. Si alguien me pueda ayudar saludos. No soy un experto en macros, la macro la realice no via visual sino grabada paso a paso.
Gracias e antemano por cualquier tip o consejo.
Una ayuda por favor, tengo la formula de la dian asi: valor presente, parentesis angular, parentesis (1+i) exponente 1/365 cierro parentesis angular
exponente n o número de dias (supongo) menos 1.
pues bién, para una persona que tenga la buena voluntad, pregunto:
¿es la formula correcta?, la tasa es anual Ej.: 20.63 anual, ¿quedaria entonces,(1+.2063)con el exponente desde luego?.
será equivalente:P(1+i)expnente:numero de dias de mora sobre 365?
¡mil gracias a los no egoista!
me comprometo a ayudar en los mismos casos.
¡ hasta siempre!
En efecto, va genial! Gracias!
esta ultima esta super …. gracias
chicos acá encontre una que anda perfecto… no te elimina ningun registro con contenido. Lo saque de ayuda de MICROSOFT. Por si a alguien le interesa:
‘ The following code deletes blank rows from the active worksheet.
Dim Counter
Dim i As Integer
Sub DelRow()
‘ Input box to determine the total number of rows in the worksheet.
Counter = InputBox(“Enter the total number of rows to process”)
Activecell.Select
‘ Loops through the desired number of rows.
For i = 1 To Counter
‘ Checks to see if the active cell is blank.
If ActiveCell = “” Then
Selection.EntireRow.Delete
‘ Decrements count each time a row is deleted. This ensures
‘ that the macro will not run past the last row.
Counter = Counter – 1
Else
‘ Selects the next cell.
ActiveCell.Offset(1, 0).Select
End If
Next i
End Sub
esta buena la macro… pero definitivamente, como dice el amigo Guillermo, te va borrando filas con datos en cada pasada… q será?!… algun errorcito?
Buenos dias. No se si podeis echarme una mano.
La macro me medio funciona, cuando la ejecuto me borra una linea si una no, las he numerado por eso lo se. Imagino que al borrar la fila el registro pasa la 2 al 1 y la macro borra la nueva 2, pero la antigua 2 que ahora es 1 se queda sin borrar.
Hacer la prueba y si tengo 100 filas me va borrando siempre la mitad, ejecutando la macro mas de 5 veces me borra todo, pero me parece una chapuza por mi parte.
Gracias.
Excelente este codigo es de mucha utilidad