Macro para elimnar Fila

26/03/2009 - 04:48 por Ricardo E. Castillo G. | Informe spam
Hola a todos, necesito hacer una macro que detecte que en la columna b
si el valor de las celda es 100, elimine la fila como podria ser la
sentencia?

Preguntas similare

Leer las respuestas

#1 Anonimo
26/03/2009 - 16:50 | Informe spam
Un saludo a todos de nuevo. Excel 2007

Hector, estoy comprobando tu código y esta perfecto, pero para cuando el
valor del rango es pequeño, pero si por ejemplo hay más de 300 filas que
cumplen esa condición, a mi personalmente me da un error.

Sin embargo sin son pocos datos, quedando un rango pequeño, lo realiza
correctamente. Entiendo entonces que existe algún tipo de limitación a la
hora de marcar el rango, verdad?
Respuesta Responder a este mensaje
#2 Héctor Miguel
27/03/2009 - 04:02 | Informe spam
hola, !

... si por ejemplo hay más de 300 filas que cumplen esa condicion, a mi personalmente me da un error.
... sin son pocos datos, quedando un rango pequeno, lo realiza correctamente.
Entiendo entonces que existe algun tipo de limitacion a la hora de marcar el rango, verdad?



dicen que "segun el sapo, es la pedrara"... en este caso la limitante es el tipo de datos asignado a la variable (string)
para rangos mas extensos (y siempre y cuando el resultado no sea mayor de 2048 rangos no contiguos)...
prueba con esta otra variante (de entre otras alternativas posibles, como filtros avanzados por codigo, etc. etc. etc.)

Sub Eliminar_Repetidos()
Dim Repetidos As Range, Col As String, F1 As Long, Fx As Long, Fila As Long
Col = "c"
F1 = 6
Fx = Range(Range(Col & F1), Range(Col & "65536").End(xlUp)).Rows.Count
For Fila = F1 To Fx + F1 - 1
If Application.CountIf(Range(Col & F1 & ":" & Col & Fila), Range(Col & Fila)) > 1 Then
Set Repetidos = Union(Iif(Repetidos Is Nothing, Range(Col & Fila), Repetidos), Range(Col & Fila))
End If
Next
If Repetidos Is Nothing Then Exit Sub
Repetidos.EntireRow.Delete
ActiveSheet.UsedRange
Set Repetidos = Nothing
End Sub

saludos,
hector.
Respuesta Responder a este mensaje
#3 Ricardo E. Castillo G.
27/03/2009 - 05:20 | Informe spam
Gracias Hecto funciono perfecto...


"Héctor Miguel" escribió en el mensaje de
noticias:#ag$
hola, !

... si por ejemplo hay más de 300 filas que cumplen esa condicion, a mi
personalmente me da un error.
... sin son pocos datos, quedando un rango pequeno, lo realiza
correctamente.
Entiendo entonces que existe algun tipo de limitacion a la hora de marcar
el rango, verdad?



dicen que "segun el sapo, es la pedrara"... en este caso la limitante es
el tipo de datos asignado a la variable (string)
para rangos mas extensos (y siempre y cuando el resultado no sea mayor de
2048 rangos no contiguos)...
prueba con esta otra variante (de entre otras alternativas posibles, como
filtros avanzados por codigo, etc. etc. etc.)

Sub Eliminar_Repetidos()
Dim Repetidos As Range, Col As String, F1 As Long, Fx As Long, Fila As
Long
Col = "c"
F1 = 6
Fx = Range(Range(Col & F1), Range(Col & "65536").End(xlUp)).Rows.Count
For Fila = F1 To Fx + F1 - 1
If Application.CountIf(Range(Col & F1 & ":" & Col & Fila), Range(Col &
Fila)) > 1 Then
Set Repetidos = Union(Iif(Repetidos Is Nothing, Range(Col & Fila),
Repetidos), Range(Col & Fila))
End If
Next
If Repetidos Is Nothing Then Exit Sub
Repetidos.EntireRow.Delete
ActiveSheet.UsedRange
Set Repetidos = Nothing
End Sub

saludos,
hector.

Respuesta Responder a este mensaje
#4 GRIEGO59
06/04/2009 - 13:06 | Informe spam
Hola Hector!
Te puedo hacer una pequeña pregunta?
Que singifica la I en esta línea de tu comando?
Me refiero a la I que está antes del if

Set Repetidos = Union(Iif(Repetidos Is Nothing, Range(Col & Fila),
Yo pensaga que era un error tuyo, pero la macro funciona.

Saludos,
Darío


"Héctor Miguel" escribió:

hola, !

> ... si por ejemplo hay más de 300 filas que cumplen esa condicion, a mi personalmente me da un error.
> ... sin son pocos datos, quedando un rango pequeno, lo realiza correctamente.
> Entiendo entonces que existe algun tipo de limitacion a la hora de marcar el rango, verdad?

dicen que "segun el sapo, es la pedrara"... en este caso la limitante es el tipo de datos asignado a la variable (string)
para rangos mas extensos (y siempre y cuando el resultado no sea mayor de 2048 rangos no contiguos)...
prueba con esta otra variante (de entre otras alternativas posibles, como filtros avanzados por codigo, etc. etc. etc.)

Sub Eliminar_Repetidos()
Dim Repetidos As Range, Col As String, F1 As Long, Fx As Long, Fila As Long
Col = "c"
F1 = 6
Fx = Range(Range(Col & F1), Range(Col & "65536").End(xlUp)).Rows.Count
For Fila = F1 To Fx + F1 - 1
If Application.CountIf(Range(Col & F1 & ":" & Col & Fila), Range(Col & Fila)) > 1 Then
Set Repetidos = Union(Iif(Repetidos Is Nothing, Range(Col & Fila), Repetidos), Range(Col & Fila))
End If
Next
If Repetidos Is Nothing Then Exit Sub
Repetidos.EntireRow.Delete
ActiveSheet.UsedRange
Set Repetidos = Nothing
End Sub

saludos,
hector.



Respuesta Responder a este mensaje
#5 Héctor Miguel
06/04/2009 - 22:23 | Informe spam
hola, Darío !

Que singifica la I en esta linea de tu comando?
Me refiero a la I que esta antes del if
Set Repetidos = Union(Iif(Repetidos Is Nothing, Range(Col & Fila),
Yo pensaga que era un error tuyo, pero la macro funciona...



segun la ayuda en linea {F1} de vba/excel cuando le preguntas por la funcion Iif (si y solo si...)

"devuelve uno de entre dos valores, dependiendo de la evaluacion de una expresion"

y muestra un ejemplo bastante ilustrativo:

Function Comprobar (Prueba As Integer)
Comprobar = IIf(Prueba > 1000, "Grande", "Pequeño")
End Function

saludos,
hector.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida