Eliminar filas si cumplen una condición

11/12/2007 - 14:43 por Carlos | Informe spam
Hola a todos,

Quisiera saber cómo se podrían eliminar filas si una de las celdas
integradas en ella cumple una condición.

Otra pregunta: por qué el formato condicional no te deja introducir
condiciones relativas a otras pestañas. Se resuelve esto en el 2007?
(lo tuve que eliminar por su falta de funcionalidad).

Saludos.

Preguntas similare

Leer las respuestas

#1 Ivan
11/12/2007 - 21:47 | Informe spam
hola Carlos

Quisiera saber cómo se podrían eliminar filas si una de las celdas
integradas en ella cumple una condición.



para tu 1ª duda si quieres prueba algo parecido a esto (adaptado a tus
condicciones reales)

para el ej:

la 1ª columna es la A y se supone que tambien es la mas larga (o igual
a la mas larga) o al menos que en la ultima fila tiene datos

la condicion iria en cualquier celda de la columna 2 y en este caso es
que ponga 'Eliminar'

copia/pega este codigo en un modulo normal del editor de VBA (Alt+F11
=> insertar => modulo a secas)

Sub EliminarFilas()
Dim f As Integer
Application.ScreenUpdating = False
For f = [a65536].End(xlUp).Row To 1 Step -1
If Cells(f, 2) = "Eliminar" Then Rows(f).Delete
Next
End Sub

como te digo seria para adaptarlo

en cuanto a la 2ª duda espero que alguien te lo aclare, porque yo no
lo se

espero te ayude

un saludo
Ivan
Respuesta Responder a este mensaje
#2 Carlos
18/01/2008 - 00:37 | Informe spam
Hola Iván, perdona que no te haya contestado, pero no miré hasta hoy.
El caso es que acabo de probar...y me funciona perfectamente!

Muchas gracias.
Respuesta Responder a este mensaje
#3 Ivan
18/01/2008 - 03:15 | Informe spam
hola Carlos

me alegro de que, aunque tarde, te haya servido.

de todas formas, si fuesen muchos registros, creo que hay formas mas
eficientes/rapidas de hacerlo

pej. con filtros avanzados, esta seria una forma, que ademas te
permite 'comodamente' elegir el campo y el dato para el criterio
(pasandole los adecuados en los argumentos del procedimiento. Echale
un ojo a los comentarios que preceden a la macro)

Requisitos:

a) las columnas IU:IV deben estar vacias (o mejor dicho, no debe
importarte lo que pudiesen contener, pues se borrara)

b) la lista debe de contener fila de titulos

c) debe empezar en A1 y los datos en A2 (esto podria modificarse)

pega los codigos en un modulo normal

''pega desde aqui
'
'- Ref = la referencia de la 2ª celda de la columna
' en la que esta el criterio (Ej: "B2")
'- Criterio = el dato por el que se elimnaran las filas.
' Puedes pasarle una celda (su contenido)
'-- Tambien podrias poner otro operador en la parte que
' carga la formula en la celda, pej. sustituyendo '<>' por '='
'
Sub EliminarFilas(Ref As String, Criterio As Variant)
Dim nC As Integer, rangos As String, rng As Range
[iv:iv].Clear
If IsDate(Criterio) Then
Criterio = CLng(CDate(Criterio))
ElseIf IsNumeric(Criterio) Then
Else
Criterio = """" & Criterio & """"
End If
Application.ScreenUpdating = False
With ActiveSheet
If .FilterMode Then .ShowAllData
Set rng = .[a1].CurrentRegion
nC = rng.Columns.Count
.[iv2].Formula = "=(" & Ref & "<>" & Criterio & ")"
.Parent.Worksheets.Add Before:=rng.Parent
End With
With rng
.AdvancedFilter action:=xlFilterCopy, _
CriteriaRange:=.Parent.[iv1:iv2], _
CopyToRange:=Range(Cells(1), Cells(1, nC))
If .Parent.FilterMode Then .Parent.ShowAllData
[a1].CurrentRegion.EntireColumn.Copy .Cells(1)
End With
Set rng = Nothing
Application.DisplayAlerts = False
ActiveSheet.Delete
Application.DisplayAlerts = True
[iv1:iv2].Clear
End Sub
'-

y para llamarla pej. algo asi

'
Sub pruebaTest2()

EliminarFilas "c2", 9

'' o asi para un texto (esta como comentario)

' EliminarFilas "c2", "Eliminar"

End Sub
'-


bueno, solo por hacerla mas versatil y rapida

un saludo
Ivan
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida