Filtros a TRAVÉS DE MACROS

17/01/2008 - 20:13 por DianaM | Informe spam
Hola a todos,

acutualmente estoy trabajando en un presentación que me llama ciertos datos
y me varía un gráfico, para esto debo crear una serie de ComboBox para que
trabajen de la misma forma que un filtro, es decir que si el el primer
ComboBox carga una opción, en el segundo solo se carguen los datos que
coínciden con el primero... de verdad que no tengo ni idea de como hacer
esto
Agradezco toda la ayuda que me puedan dar

Preguntas similare

Leer las respuestas

#1 Ivan
17/01/2008 - 20:52 | Informe spam
hola Diana

...debo crear una serie de ComboBox para que




trabajen de la misma forma que un filtro, es decir que si el el primer
ComboBox carga una opción, en el segundo solo se carguen los datos que
coínciden con el primero...<<<



la verdad es que lo que comentas no tiene por que ser complicado, pero
quizas convendria que expusieras detalles mas concretos (en terminos
de excel), detalles pej. como:

.- campos/columnas con los que cargarias los combos
.- si el nº de filas es fijo o variable
.- donde se encuentra la lista
.- de donde y como rellenas el 1er combo
.- a que te refieres con 'datos que coinciden' => a los que son
exactamente iguales, a los contenidos en determinado campo
(¿seleccionado en el combo º?), a .
.- donde tienes/pones los combos
.- y todo lo que creas pueda ayudar a tener mas claro lo que buscas
(sin datos, desde este lado se hace complicado verlo)

en fin, siento no ser de gran ayuda, pero si te animas a ampliar la
informacion seguro que obtienes respuestas mas utiles

un saludo
Ivan
Respuesta Responder a este mensaje
#2 DianaM
18/01/2008 - 13:51 | Informe spam
Hola

Por lo que escribe Ivan veo que no soy muy clara... lo que trato de hacer es
q' tengo una base de datos de productos y sus caracteristicas... en la
primera columna se tiene la familia de productos, en la siguiente el grupo y
finalmente el código del producto así que lo que necesito es q' el
primero me muestre las familias y según la familia q' se elija, el segundo
cargue los grupos que se encuentran en esta familia, y al elejir un grupo que
solo me muestre los productos de esta familia, que estan en ese grupo... es
decir que funcione como un filtro...

Eje:

A B C
1 FAMILIA GRUPO PRODUCTO
2LACTEO SEMIDESCREMADO 000001
3LACTEO CREMOSO 000002
4CARNE NEGRA 000003
5CARNE MAGRA 000004

Así que cuando seleccione la familia lacteo, en el siguiente solo me muestre
semidescremado y cremoso, y al elejir cremoso solo me aparezca el producto
000002

Muchas Gracias
"Ivan" escribió:

hola Diana

>>>...debo crear una serie de ComboBox para que
> trabajen de la misma forma que un filtro, es decir que si el el primer
> ComboBox carga una opción, en el segundo solo se carguen los datos que
> coínciden con el primero...<<<

la verdad es que lo que comentas no tiene por que ser complicado, pero
quizas convendria que expusieras detalles mas concretos (en terminos
de excel), detalles pej. como:

.- campos/columnas con los que cargarias los combos
.- si el nº de filas es fijo o variable
.- donde se encuentra la lista
.- de donde y como rellenas el 1er combo
.- a que te refieres con 'datos que coinciden' => a los que son
exactamente iguales, a los contenidos en determinado campo
(¿seleccionado en el combo º?), a .
.- donde tienes/pones los combos
.- y todo lo que creas pueda ayudar a tener mas claro lo que buscas
(sin datos, desde este lado se hace complicado verlo)

en fin, siento no ser de gran ayuda, pero si te animas a ampliar la
informacion seguro que obtienes respuestas mas utiles

un saludo
Ivan

Respuesta Responder a este mensaje
#3 excelamedida.com
18/01/2008 - 17:39 | Informe spam
Hola Diana!
Te comento...
Para emplear el código que te propongo tal y como está, tienes que
hacer estas cosas, si no, lo ajustas a tu gusto.

En A1 escribe FAMILIA, en B1 GRUPO
en A4 escribe FAMILIA, en B4 GRUPO y en C4 PRODUCTO
a partir de A5 escribes la base de datos. (las filas 1 a 3 si no te
gustan que se vean puedes ocultarlas)

Tienes que crearte un UserForm con dos ComboBox, uno se llamará
ComboBox1 y el otro ComboBox2.

Copia y pega todo el código que propongo en el código del formulario

Private Sub ComboBox1_Change()
[a2] = ComboBox1.Value
CargaDeComboBox2
End Sub

Private Sub ComboBox2_Change()
[b2] = ComboBox2.Value
Filtro
End Sub

Private Sub UserForm_Initialize()
FiltroInicial
End Sub

Private Sub CargaDeComboBox2()
Filtro
Dim celda As Range
With ComboBox2
.Clear
For Each celda In Range("b5:b" _
& Range("b65536").End(xlUp).Row) _
.SpecialCells(xlCellTypeVisible)
.AddItem celda
Next
End With
End Sub

Private Sub Filtro()
Range("A4:C65536").AdvancedFilter _
Action:=xlFilterInPlace, _
CriteriaRange:=Range("A1:B2"), _
Unique:=False
End Sub
Private Sub FiltroInicial()
Range("A4:A65536").AdvancedFilter _
Action:=xlFilterInPlace, _
CriteriaRange:="", _
Unique:=True

Dim celda As Range
With ComboBox1
.Clear
For Each celda In Range("a5:a" _
& Range("a65536").End(xlUp).Row) _
.SpecialCells(xlCellTypeVisible)
.AddItem celda
Next
End With
If ActiveSheet.FilterMode = True _
Then ActiveSheet.ShowAllData
End Sub

Private Sub UserForm_Terminate()
If ActiveSheet.FilterMode = True _
Then ActiveSheet.ShowAllData
Rows("2:2").ClearContents
End Sub

Espero haberte ayudado, si tienes alguna consulta...
Un saludo
JJE

Hola

Por lo que escribe Ivan veo que no soy muy clara... lo que trato de hacer es
q' tengo una base de datos de productos y sus caracteristicas... en la
primera columna se tiene la familia de productos, en la siguiente el grupo y
finalmente el código del producto así que lo que necesito es q' el
primero me muestre las familias y según la familia q' se elija, el segundo
cargue los grupos que se encuentran en esta familia, y al elejir un grupo que
solo me muestre los productos de esta familia, que estan en ese grupo... es
decir que funcione como un filtro...

Eje:

    A                   B                                  C
1 FAMILIA          GRUPO                          PRODUCTO
2LACTEO           SEMIDESCREMADO        000001
3LACTEO           CREMOSO                     000002
4CARNE             NEGRA                          000003
5CARNE             MAGRA                         000004

Así que cuando seleccione la familia lacteo, en el siguiente solo me muestre
semidescremado y cremoso, y al elejir cremoso solo me aparezca el producto
000002

Muchas Gracias
Respuesta Responder a este mensaje
#4 DianaM
18/01/2008 - 21:19 | Informe spam
Gracias JJE tu ejemplo me ha servido de mucho!!!! si tengo cualquier otro
inconveniente intentando ajustarlo a mi base de datos... espero puedas ayudar
:D gracias!!!!

"excelamedida.com" escribió:

Hola Diana!
Te comento...
Para emplear el código que te propongo tal y como está, tienes que
hacer estas cosas, si no, lo ajustas a tu gusto.

En A1 escribe FAMILIA, en B1 GRUPO
en A4 escribe FAMILIA, en B4 GRUPO y en C4 PRODUCTO
a partir de A5 escribes la base de datos. (las filas 1 a 3 si no te
gustan que se vean puedes ocultarlas)

Tienes que crearte un UserForm con dos ComboBox, uno se llamará
ComboBox1 y el otro ComboBox2.

Copia y pega todo el código que propongo en el código del formulario

Private Sub ComboBox1_Change()
[a2] = ComboBox1.Value
CargaDeComboBox2
End Sub

Private Sub ComboBox2_Change()
[b2] = ComboBox2.Value
Filtro
End Sub

Private Sub UserForm_Initialize()
FiltroInicial
End Sub

Private Sub CargaDeComboBox2()
Filtro
Dim celda As Range
With ComboBox2
.Clear
For Each celda In Range("b5:b" _
& Range("b65536").End(xlUp).Row) _
.SpecialCells(xlCellTypeVisible)
.AddItem celda
Next
End With
End Sub

Private Sub Filtro()
Range("A4:C65536").AdvancedFilter _
Action:=xlFilterInPlace, _
CriteriaRange:=Range("A1:B2"), _
Unique:=False
End Sub
Private Sub FiltroInicial()
Range("A4:A65536").AdvancedFilter _
Action:=xlFilterInPlace, _
CriteriaRange:="", _
Unique:=True

Dim celda As Range
With ComboBox1
.Clear
For Each celda In Range("a5:a" _
& Range("a65536").End(xlUp).Row) _
.SpecialCells(xlCellTypeVisible)
.AddItem celda
Next
End With
If ActiveSheet.FilterMode = True _
Then ActiveSheet.ShowAllData
End Sub

Private Sub UserForm_Terminate()
If ActiveSheet.FilterMode = True _
Then ActiveSheet.ShowAllData
Rows("2:2").ClearContents
End Sub

Espero haberte ayudado, si tienes alguna consulta...
Un saludo
JJE

> Hola
>
> Por lo que escribe Ivan veo que no soy muy clara... lo que trato de hacer es
> q' tengo una base de datos de productos y sus caracteristicas... en la
> primera columna se tiene la familia de productos, en la siguiente el grupo y
> finalmente el código del producto así que lo que necesito es q' el
> primero me muestre las familias y según la familia q' se elija, el segundo
> cargue los grupos que se encuentran en esta familia, y al elejir un grupo que
> solo me muestre los productos de esta familia, que estan en ese grupo... es
> decir que funcione como un filtro...
>
> Eje:
>
> A B C
> 1 FAMILIA GRUPO PRODUCTO
> 2LACTEO SEMIDESCREMADO 000001
> 3LACTEO CREMOSO 000002
> 4CARNE NEGRA 000003
> 5CARNE MAGRA 000004
>
> Así que cuando seleccione la familia lacteo, en el siguiente solo me muestre
> semidescremado y cremoso, y al elejir cremoso solo me aparezca el producto
> 000002
>
> Muchas Gracias

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