En este grupo En todos

Foro de Excel



Eliminar filas con celdas de valor cero

Milton
Ingeniero civil universidad central
Escrito por Milton Cordova
el 26/11/2013

Saludos, necesito una macro que elimine todas las filas de una hoja de un rango P1:P19800 cuyas celdas tengan un valor de cero, este cero es resulatdo de una formula.

Gracias

Armando Montes
Foro excel emagister
Escrito por Armando Montes
el 26/11/2013

Hola Milton, usa algo asi:
LR = Range("P" & Rows. Count). End(xlUp). Row
ActiveSheet. Range("$A$1:$P$" & LR). AutoFilter Field:=15, Criteria1:="0"
Range("A1:P" & LR). SpecialCells(xlCellTypeVisible). EntireRow. Delete
Si prefieres sube tu libro para insertar el codigo completo.

Milton Cordova
Ingeniero civil universidad central
Escrito por Milton Cordova
el 27/11/2013

Saludos gracias por la contestacion: lamentablemente no me funcioan la macro, he subido un archivo Elimina filas segun criterio para mejor comprension.

Milton

Armando Montes
Foro excel emagister
Escrito por Armando Montes
el 27/11/2013

Con esa estructura es mas facil aun:
Sub Macro1()
Range("P2:P19643"). EntireRow. Delete
End Sub
Si en vez de borrar las filas solo quieres limpiarlas: ClearContents
Para borrar solo las celdas, no las filas: Delete Shift:=xlUp

Milton Cordova
Ingeniero civil universidad central
Escrito por Milton Cordova
el 28/11/2013

Saludos estimado Armando lamentablemente el archivo enviado no era el correcto, he actualizado un nuevo archivo.

La macro no me funciona para lo que deseo que es elimine las filas con valor cero y dejhe las filas con valor 1 de las columna P

Gracias y disculpas por este error.

Milton

Adrian Colazo
Técnico operador en pc universidad nac...
Escrito por Adrian Colazo
el 28/11/2013

Hola, prueba con:

Sub ElimiarFilas2()
Dim r As Long
Dim RngFilt As Range
Set RngFilt = Range(Range("P1"), Range("P" & Rows. Count). End(xlUp))
If ActiveSheet. FilterMode Then
ActiveSheet. AutoFilter
RngFilt. AutoFilter field:=1, Criteria1:="0"
Else
RngFilt. AutoFilter field:=1, Criteria1:="0"
End If
RngFilt. Offset(1, 0). Resize(RngFilt.Rows.Count - 1). SpecialCells(xlCellTypeVisible). EntireRow. Delete
Range("A1"). AutoFilter
End Sub


Ojo con los espacios generados al copiar y pegar este código; lo probé y andubo.

Milton Cordova
Ingeniero civil universidad central
Escrito por Milton Cordova
el 29/11/2013

Saludos estimado Adrian, la macro funciona bien para el ejemplo enviado, pero no encuentro la causa del porque no funciona para otros ejemplos.

Disculpas por esta consulta pero he tratado de hacer varias modificaiones y no encuentro la solucion para el ejemplo que lo subo "elimina filas segun criterio valor 0"

Gracias por tu tiempo y ayuda al igual que a todos los participantes

Milton

Adrian Colazo
Técnico operador en pc universidad nac...
Escrito por Adrian Colazo
el 29/11/2013

Hola Milton, lo que hice en el último archivo que subistes fue:

1) Ir a Opciones de Excel/Avanzadas/Mostrar Valores para esta hoja/... Marcar la opción que dice Mostrar un cero en celdas que tienen valor cero.

2) Hice correr la macro y funcionó.


Prueba estos pasos a ver que pasa. Espero se solucione.

Cacho Rodríguez
Ingeniería electrónica universidad nac...
Escrito por Cacho Rodríguez
el 29/11/2013

Como las propuestas han sido correctas en todos los casos, te sugiero "cortar por lo sano" y:

- Duplica en tu archivo de muestra la hoja que contiene los datos iniciales;

- Incorpora al archivo la macro que estés utilizando;

- Ejecuta (sobre cualquiera de las dos hojas gemelas) la macro, y explica allí que es lo que consideras que no responde a tus necesidades.

- Como es habitual, avisa con un mensaje en este intercambio cuando ya hayas subido el archivo según lo solicitado.

Tras lo anterior, me parece que será más sencillo entenderte: ¿OK?
Saludos, Cacho R.

Milton Cordova
Ingeniero civil universidad central
Escrito por Milton Cordova
el 30/11/2013

Saludos estimados Masters como siempre geniales.

Cada debate me sirve de mucho para ir aprendiendo mas, aunque para ustedes les parezca algo basico, para mi es algo importante.

Milton