Forums Últimos mensajes - Powered by IBM
 

Selección Aleatoria de Datos

23/03/2005 - 20:03 por Marvin | Informe spam
Que tal grupo, espero me puedan ayudar, necesito programar una macro en donde
durante el proceso seleccione un rango de datos resultado de filtrar mis
datos de acuerdo a una lista, es decir, yo tengo una lista de datos de
A2:A30, y quiero que de esa lista se filtren los datos contenidos en otro
libro P.e. de la columna B5, y si el rango va de A5:K23546 resultado de mi
filtro, me seleccione ese rango, obviamente es aleatorio, pueden ser más o
menos lo desconozco ya que depende del criterio del filtro, despues pegarlo
en una nueva hoja e ir agregando el resultado de cada filtro. Espero me
puedan ayudar.
 

Leer las respuestas

#1 Héctor Miguel
24/03/2005 - 10:35 | Informe spam
hola, Marvin !

... macro en donde... seleccione... datos resultado de filtrar... de acuerdo a una lista
... tengo una lista... de A2:A30, y quiero que... se filtren los datos... en otro libro p.e. de la columna B5
... seleccione ese rango... que depende del criterio del filtro... pegarlo en una nueva hoja e ir agregando... cada filtro



si he entendido 'bien'... prueba con la macro de al final [estos son 'mis' supuestos]:
-> hay un 'Libro2' con una 'Hoja1' donde se 'filtra' [con base en 'B5'] el rango 'A5:Kn'
[supongo que la fila 5 son titulos/encabezados que estoy 'dejando fuera' del copiado]
-> en el libro 'de origen' [el 'activo'] hay una 'Hoja1' con los criterios para filtrar en el rango 'A2:A30'
[tambien hay una 'Hoja2' que es a donde se copia el resultado de cada 'filtrado']
-> 'te toca' modificar los nombres 'reales' de llibros y hojas :))

si cualquier duda [o informacion adicional]... comentas?
saludos,
hector.
en un modulo de codigo 'normal' EN el libro con el rango de los criterios ==Sub Acumular_Filtrados()
Application.ScreenUpdating = False
Dim Celda As Range, Filtrando As String
With Workbooks("Libro2").Worksheets("Hoja1")
If .[b5].AutoFilter Then .[b5].AutoFilter
Filtrando = .Range(.[b5], .[b65536].End(xlUp)).Address
For Each Celda In Worksheets("Hoja1").Range("a2:a30")
If Application.CountIf(.Range(Filtrando), Celda) > 0 Then
.Range(Filtrando).AutoFilter Field:=1, Criteria1:="=" & Celda
With .[b5].CurrentRegion
.SpecialCells(xlCellTypeVisible).Offset(1).Resize(.Rows.Count - 1).Copy _
Worksheets("Hoja2").[a65536].End(xlUp).Offset(1)
End With
End If
Next
.[b5].AutoFilter
End With
End Sub

Preguntas similares