¿Cómo puedo generar un filtro de un filtro ?

Necesito solucionar un problema, tengo una base de datos, con tres columnas importantes, ámbito, proyecto e iniciativa, me gustaría generar un filtro por ámbito sin la necesidad de generar un cambio en la base. Cada ámbito tiene proyectos, y cada proyecto iniciativas, me gustaría seleccionar un ámbito, se filtren los proyectos, y luego al seleccionar un proyecto me filtre los ámbitos.

Hasta el momento tengo un User From que me muestra solamente las iniciativas

Adjunto la base de datos(Hoja consolidado), al generar el botón panel de usuario se debe ingresar una contraseña"matias1995", se generara un panel donde se debe seleccionar buscar o modificar iniciativa(Este USE FORM se llama buscar). He buscado métodos, pero todos me piden modificar la base de datos, lo cual no es posible.

Espero me puedan ayudar, Saludos( No puedo adjuntar un archivo)

1 Respuesta

Respuesta
2

Te anexo la macro para cargar el combo de ámbitos y el combo de Proyectos.

Pero no sé en cuál columna o cómo identificar las iniciativas del proyecto seleccionado, crea el combobox35 para los ámbitos y el combobox36 para los proyectos

Private Sub ComboBox35_Change()
    'Para cada cambio de ámbito llenar proyectos
    ComboBox36. Clear
    ComboBox36.Value = ""
    If ComboBox35.Value = "" Or ComboBox35.ListIndex = -1 Then Exit Sub
    '
    Set h = Sheets("Consolidado")
    For i = 3 To h.Range("B" & Rows.Count).End(xlUp).Row
        If h.Cells(i, "B").Value = ComboBox35 Then
            Call Agregar(ComboBox36, h.Cells(i, "E"))
        End If
    Next
End Sub
'
Private Sub UserForm_Activate()
'Cargar los ámbitos
    Set h = Sheets("Consolidado")
    For i = 3 To h.Range("B" & Rows.Count).End(xlUp).Row
        Call Agregar(ComboBox35, h.Cells(i, "B"))
    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

Prueba esta parte y me comentas con un ejemplo cómo llegar a las iniciativas.

Por ejemplo dante, cada proyecto tiene iniciativas en conjunto, por ejemplo un proyecto tiene 10 iniciativas que se encuentran en la columna A. De la imagen, me gustaría poder adjuntarte la base para que puedas observarla de mejor manera 

Entonces quedaría así:

Private Sub ComboBox35_Change()
    'Para cada cambio de ámbito llenar proyectos
    ComboBox36. Clear 'limpiar proyectos
    ComboBox36.Value = ""
    ComboBox2.Clear         'limpia iniciativas
    ComboBox2.Value = ""
    If ComboBox35.Value = "" Or ComboBox35.ListIndex = -1 Then Exit Sub
    '
    Set h = Sheets("Consolidado")
    For i = 3 To h.Range("B" & Rows.Count).End(xlUp).Row
        If h.Cells(i, "B").Value = ComboBox35.Value Then
            Call Agregar(ComboBox36, h.Cells(i, "E"))
        End If
    Next
End Sub
'
Private Sub ComboBox36_Change()
'Para cada cambio de proyecto, se cargan las iniciativas
    ComboBox2.Clear         'limpia iniciativas
    ComboBox2.Value = ""
    If ComboBox36.Value = "" Or ComboBox36.ListIndex = -1 Then Exit Sub
    '
    Set h = Sheets("Consolidado")
    For i = 3 To h.Range("B" & Rows.Count).End(xlUp).Row
        If h.Cells(i, "B").Value = ComboBox35.Value And _
           h.Cells(i, "E").Value = ComboBox36.Value Then
            Call Agregar(ComboBox2, h.Cells(i, "A"))
        End If
    Next
End Sub
'
Private Sub UserForm_Activate()
'Cargar los ámbitos
    Set h = Sheets("Consolidado")
    For i = 3 To h.Range("B" & Rows.Count).End(xlUp).Row
        Call Agregar(ComboBox35, h.Cells(i, "B"))
    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

sal u dos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas