MACROS EN AUTOFILTROS

27/07/2005 - 06:23 por DANILO ARANGO | Informe spam
Hola foro
Alguien me puede ayudar, todos los dias recibo un archivo al cual se le
aplican una serie de filtros, los resultados de esos filtros los debo de
eliminar, esto lo debo hacer en varias colomunas inclusive conbinando
Filtros, como puedo hacerlo automatico?.

Estuve tratando de hacerlo con la grabadora de macros, pero no me da por
que, al aplicar el filtro debo de eliminar apartir de la linea que saca
entonces como el filtro saca otro numero de lineas, la grabadora de macros me
graba es la linea que seleccione.

Espero me haya explicado correctamen.


Saludos
Danilo A.

Preguntas similare

Leer las respuestas

#11 DANILO ARANGO
28/07/2005 - 06:17 | Informe spam
HOLA HM

El codigo me saca error, error de sintaxis.

Gracias por tu ayuda
Danilo .




"Héctor Miguel" escribió:

hola, Danilo !

> ... todos los dias recibo un archivo al cual se le aplican una serie de filtros... los resultados... los debo de eliminar
> ... esto lo debo hacer en varias colomunas inclusive conbinando Filtros, como puedo hacerlo automatico?.
> ... tratando... con la grabadora de macros, pero... al aplicar el filtro... la grabadora... me graba la linea que seleccione.

de acuerdo con la consulta que haces en el grupo de access [24 min despues que aqui]
-> donde tampoco aportas [suficientes] datos 'ilustrativos' [a pesar de que la mencionas como 'urgente'] :-(
-> y asumiendo que de una consulta a bases de datos obtienes registros duplicados [motivo de los filtrados]
-> si lo quisieras resolver [una vez 'pasados' los datos a excel]
te paso un ejemplo con 'otra' forma de eliminar duplicados [sobre la hoja activa]
-> siempre y cuando el numero de 'areas' [o rangos discontinuos] 'final' NO exceda de 2048 :(
[o seria necesario 'anticipar' con una 'deteccion' y re/iniciar el proceso -misma macro-] ;)
-> modifica la columna donde se busca ['a' en el ejemplo] y la fila 'inicial' [la #2 en el ejemplo]

si cualquier duda [o informacion adicional]... comentas?
saludos,
hector.
en un modulo de codigo 'normal' ==> Sub Eliminar_Repetidos()
Dim Eliminar As Range, Col As String, F1 As Long, Fx As Long, Fila As Long
Application.ScreenUpdating = False
Col = "a"
F1 = 2
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
If Eliminar Is Nothing Then Set Eliminar = Range(Col & Fila)
Set Eliminar = Union(Eliminar, Range(Col & Fila))
End If
Next
If Not Eliminar Is Nothing Then Eliminar.EntireRow.Delete: Set Eliminar = Nothing
End Sub



Respuesta Responder a este mensaje
#12 Héctor Miguel
28/07/2005 - 06:41 | Informe spam
hola, Danilo !

El codigo me saca error, error de sintaxis.



podrias indicar en cual linea 'salta' el error ?

saludos,
hector.
Respuesta Responder a este mensaje
#13 DANILO ARANGO
28/07/2005 - 06:56 | Informe spam
hola HM

Col = "a"

Fx = Range(Range(Col & F1), Range(Col & "65536").End(xlUp)).Rows.Count


If Application.CountIf(Range(Col & F1 & ":" & Col & Fila), Range(Col &
Fila)) > 1 Then
If Eliminar Is Nothing Then Set Eliminar = Range(Col & Fila)
Set Eliminar = Union(Eliminar, Range(Col & Fila))


En esas tres lineas inclusive al copiar el codigo quedan en rojo

Gracias HM





"Héctor Miguel" escribió:

hola, Danilo !

> El codigo me saca error, error de sintaxis.

podrias indicar en cual linea 'salta' el error ?

saludos,
hector.



Respuesta Responder a este mensaje
#14 Héctor Miguel
28/07/2005 - 07:11 | Informe spam
hola, Danilo !

Col = "a"
Fx = Range(Range(Col & F1), Range(Col & "65536").End(xlUp)).Rows.Count
If Application.CountIf(Range(Col & F1 & ":" & Col & Fila), Range(Col &
Fila)) > 1 Then
If Eliminar Is Nothing Then Set Eliminar = Range(Col & Fila)
Set Eliminar = Union(Eliminar, Range(Col & Fila))

En esas tres lineas inclusive al copiar el codigo quedan en rojo



[seguramente] se debio a los 'saltos de linea' que 'causa'
un texto largo en los mensajes del grupo :((
prueba cambiando [toda] la macro propuesta a lo siguiente:
==Sub Eliminar_Repetidos()
Dim Eliminar As Range, Col As String, _
F1 As Long, Fx As Long, Fila As Long
Application.ScreenUpdating = False
Col = "a"
F1 = 2
Fx = Range(Col & "65536").End(xlUp).Row
For Fila = F1 To Fx
If Application.CountIf( _
Range(Col & F1 & ":" & Col & Fila), _
Range(Col & Fila)) > 1 Then
If Eliminar Is Nothing _
Then Set Eliminar = Range(Col & Fila)
Set Eliminar = Union(Eliminar, Range(Col & Fila))
End If
Next
If Not Eliminar Is Nothing _
Then Eliminar.EntireRow.Delete: _
Set Eliminar = Nothing
End Sub

comentas?
saludos,
hector.
Respuesta Responder a este mensaje
#15 KL
28/07/2005 - 10:40 | Informe spam
Hola Danilo,

Yo, la verdad, sigo con la idea del Filtro Avanzado. Prueba este codigo
teniendo la hoja con los datos duplicados activada: y lanzandolo desde un
modulo estandar (de hecho desde cualquier modulo)

Sub EliminarDuplicados()
Application.ScreenUpdating = False
With ActiveWorkbook
Set rng = .ActiveSheet.UsedRange
'o indica el rango expresamente.
.Worksheets.Add After:=.ActiveSheet
.ActiveSheet.Name = "Datos Filtrados"
rng.AdvancedFilter Action:=xlFilterCopy, _
CopyToRange:=Range("A1"), Unique:=True
End With
Application.ScreenUpdating = True
End Sub


Saludos,
KL


"DANILO ARANGO" wrote in message
news:
HOLA HM Y KL

Son dos casos:
1. El que mencione en esta exposicion de como aplicar los filtros
automaticamente borrando las coincidencias que se presenten sin borrar el
encabezado por supuesto.

2. En Acces se me presenta una duplicida de datos, lo que pasa es que si
hay
duplicidad realmente pero Acces me lo duplica mas veces p.e. si hay 2
registros me lo duplica a 4 registros. Esto lo hago en Excel, lo de borrar
manualmente.

Que me aconsejan que haga.

Gracias por su ayuda
Danilo A.




"KL" escribio:

Hola HM,

> [aun asi]... no olvides que existen una gran variedad de
> 'trucos/metodos/...' para buscar una 'comparacion multiple' :D

que yo sepa, segun el numero de campos y registros, al comparar todas las
celdas de una fila con todas las celdas de otra fila esos trucos/metodos
pueden hacer que tu macro tarde una eternidad :-D

> [por lo que considero que sigue siendo mas 'viable'... hacerlo 'en una
> sola pasada']

:-\
El Filtro Avanzado tarda menos de un segundo incluso en tablas muy
grandes y
ademas es una solucion hecha que no deberia requerrir ningun "tweaking"
(digo yo ???). Y si se puede ponerlo en un macro, creo que tiene poco
sentido usar un bucle para la misma tarea [otra vez, salvo el supuesto de
que los datos duplicados a eliminar sean duplicados parciales]

Saludos,
KL



Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida