............ Foro Excel
Si no lo has hecho aún: REGISTRATE!!!

Userform para filtrar datos de una tabla según variable y un rango de fechas (3 variables)

Ver el tema anterior Ver el tema siguiente Ir abajo

Userform para filtrar datos de una tabla según variable y un rango de fechas (3 variables)

Mensaje por crissekav el Mar Mar 31, 2015 11:22 am

Buenas tardes moises melgar:
No puedo ver el fichero adjunto con tu solución aportada.
Adjunto el fichero "ejemplo" para el que solicito tu ayuda
En la pestaña "Inicio" hay dos botones. El que se pone "Consulta" me abre un userform a través del cual necesito que me filtre los datos de la pestaña"Registro" según tres variables:
1ª: Modelo. esto ya lo tengo solucionado
2ª y 3ª por fechas. Es ahí donde necesito tu ayuda.

En principio no necesitaria copiar los datos a ninguna otra hoja. Pero en caso de necesitarlo, al realizar la consulta me gustaria que al activar el botón "Aceptar " del propio userform me  copiara todas las filas con datos más los encabezados a otra hoja del mismo libro .

crissekav

Femenino Cantidad de envíos : 2
Edad : 35
Ciudad - Pais : avilés-España
Version de Excel : 2010
Fecha de inscripción : 27/03/2015

Volver arriba Ir abajo

Re: Userform para filtrar datos de una tabla según variable y un rango de fechas (3 variables)

Mensaje por moises melgar el Vie Abr 03, 2015 6:32 am

En ese caso lo mas simple que se me ocurre es por medio de Filtrado Avanzado
ya que el codigo para el uso de rango avanzado es:

"rango a filtrar".AdvancedFilter Action:=xlFilterCopy, CriteriaRange:="rango de los criterios de filtro", CopyToRange:="rango donde se van a copiar", Unique:=True

luego una vez obtenido el rango filtrado pasarlos al listbox

en mi ejemplo uso una hoja auxiliar para el filtrado y asi va:

Código:
Private Sub filtro()
On Error Resume Next
Hoja2.Range("F2").Value = ComboBox1
Hoja2.Range("G4").Value = ComboBox2
Hoja2.Range("H4").Value = ComboBox3

Hoja2.Range("A1:C" & filaf).AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Hoja2.Range("F1:H2"), CopyToRange:=Hoja2.Range("J1:L1"), Unique:=True

If Hoja2.Range("J2").Value = "" Then '<---verifica si no hay datos resultantes del filtro avanzado
    Else: '<--solo cargara el listboxt si existen al menos 1 dato resultante
    ListBox1.ColumnCount = 3 ' si el num de colum varia colocar: Hoja2.Range("A1").End(xlToRight).Column 'num de col
    ListBox1.RowSource = "Registro!J2:L" & Hoja2.Range("L" & Rows.Count).End(xlUp).Row
End If
end sub

y existen dos codigos mas:

UserForm_Initialize donde se cargan los datos a los combobox (evalua y no agrega los duplicados)
CommandButton1_Click este traspasa los valores resultantes del filtrado avanzado a una hoja existente

Ojala este pequeño ejemplo te ayude a darte algunas ideas (o en su caso despejar dudas) para la realizacion de tu planteamiento

[Tienes que estar registrado y conectado para ver este vínculo]

saludos

avatar
moises melgar
Jr_Moderator

Masculino Cantidad de envíos : 552
Edad : 29
Ciudad - Pais : Coatzacoalcos - Mexico
Version de Excel : 2007 - 2010
Fecha de inscripción : 25/05/2010

Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba


 
Permisos de este foro:
No puedes responder a temas en este foro.