Macro para filtrar desde ComboBox

Necesito una macro para que filtre desde un ComboBox. Me explico, la Base de datos tiene las columnas A:AW, necesito que el ComboBox1(Filtrar LIMA / PROVINCIA), me liste todos los datos únicos de la columna S.

1 respuesta

Respuesta
1

¿Quieres qué te filtre por lo que pusiste en el combo?

¿Pero no entiendo a qué te refieres con datos únicos?

Puedes poner ejemplos de lo que tienes en la columna S, supongo que en la columna S tienes las provincias, entonces pon ejemplos de provincias en la columna S, luego me pones un ejemplo de lo que vas a seleccionar el combo y por último pon un ejemplo de lo que esperas como resultado del filtro.

1/. ¿Quieres qué te filtre por lo que pusiste en el combo? En el ComboBox debe de salir la lista de las provincias de la columna S, sin que estos datos se dupliquen, solo datos únicos. Por ejemplo, LIMA, LIMA, TRUJILLO, TACNA, etc. Debe de ser LIMA, TRUJILLO, TACNA, etc.

2/. "Puedes poner ejemplos de lo que tienes en la columna S" En la columna tengo las provincias, son muchas, algunas son, LIMA, TRUJILLO, TACNA, ANCASH, LORETO, etc.

3/."luego me pones un ejemplo de lo que vas a seleccionar el combo" En la base de datos tengo columnas desde la A hasta la AW, necesito que el combo me liste las provincias de la columna S, y yo pueda seleccionar una provincia para filtrarla en la hoja.

4/. "pon un ejemplo de lo que esperas como resultado del filtro." Espero como resultado del filtro, que me permita filtrar por la provincia que yo elija. Ejemplo, si filtro LIMA, que solo se visualicen los datos de la columna A hasta la AW con la provincia LIMA filtrada de la columna S.

Te anexo el código para tu userform

Private Sub ComboBox1_Change()
    Set h = Sheets("Hoja2")
    u = h.Range("S" & Rows.Count).End(xlUp).Row
    h.Range("A1:W" & u).AutoFilter Field:=19, Criteria1:=ComboBox1.Value
End Sub
'
Private Sub UserForm_Activate()
    Set h = Sheets("Hoja2")
    If h.AutoFilterMode Then h.AutoFilterMode = False
    For i = 2 To h.Range("S" & Rows.Count).End(xlUp).Row
        Call Agregar(ComboBox1, h.Cells(i, "S").Value)
    Next
End Sub
'
Sub Agregar(combo As ComboBox, dato As String)
'por.DAM agrega los item únicos y en orden alfabético
    For i = 0 To combo.ListCount - 1
        Select Case StrComp(combo.List(i), dato, vbTextCompare)
            Case 0: Exit Sub 'ya existe en el combo y ya no lo agrega
            Case 1: combo.AddItem dato, i: Exit Sub 'Es menor, lo agrega antes del comparado
        End Select
    Next
    combo.AddItem dato 'Es mayor lo agrega al final
End Sub

Supongo que los títulos están en la fila 1 y los datos empiezan en la fila2.

Cambia en los eventos "Hoja2" por el nombre de tu hoja.

.

. S aludos. Dante Amor. Si es lo que necesitas R ecuerda valorar la respuesta. G racias

.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas