Saltar al contenido

Filtrar listbox utilizando un combo box dinámico


Recommended Posts

publicado

Estimados, esperando que todos se encuentren muy bien en estos días dificiles, les escribo para que puedan ayudarme con vuestro conocimiento respecto al tema del título: Requiero realizar un filtro en un combo box en base a un list box, el cual debe actualizarse cada vez que se ingresa nueva información a la plantilla.

He estado trabajando en base a unos códigos que un canal de excel ha colgado en internet. El tema es han explicado como filtrar un listbox en base a un text box y se me ha ocurrido la idea de hacerlo a través de un combo box. Resultado: No he podido imaginarme como.

Mi primera duda es: Como puedo asignar un RowSource a una columna que va aumentando la cantidad de datos que incluye pero que tampoco se repitan

Mi Segunda duda: Como enlazar el listbox con el combo box, escasamente lo he intentado en el archivo que les adjunto, sin ningún resultado. Lo que busco es filtrar por el número de licitación al cual está asignado cada grupo de limpieza.

Espero puedan ayudarme con la tarea que intento llevar a cabo. Estaré atento a las dudas que aparezcan y a aclarar si es que consideran que mi punto no se entiende.

 

Agradecido de vuestra ayuda,

Saludos desde Chile.

Felipe.

 

 

listbox-combobox.xlsmFetching info...

publicado

Estimado @JSDJSD, agradezco mucho tu colaboración!

En parte, soluciona una de mis dudas, ya que me has ayudado a lograr que se enlace el filtro por combo box y se filtre en el list box, y que además el combo box sea dinámico cada vez que se agregan nuevos datos.

Me falta otra duda por solucionar: Es muy probable que el nombre de la persona se vuelva a repetir, y solo cambiará la fecha, licitación y programa. En ese caso, he notado que el filtro comienza a repetir los nombres cada vez que vuelven a incluirse en la columna B.

Conoces de algún método en el que se puedan quitar los duplicados para garantizar una búsqueda eficaz? 

Te adjunto el archivo en donde he repetido los mismos nombres.

PS: Noté además, que en el listado del combo box aparece "Persona" como un nombre. Eso lo quitamos con un Offset, verdad? Voy a ver si lo voy solucionando mientras.

Gracias!listbox-comboboxPrueba(1).xlsm

publicado

Estimado @JSDJSD hoy apenas tuve la oportunidad de sentarme y corroborar que si, es exactamente lo que buscada, muchas gracias!! Lo ensayaré en mi archivo y estudiaré que es lo que me faltaba de conocimiento para practicarlo por mi mismo. AGRADECIDO.

publicado

No olvides agradecer a quien te ayuda o intenta ayudar, y en este foro es mediante el corazoncito que hay en la parte inferior derecha

 

publicado
  En 19/7/2020 at 7:04 , JSDJSD dijo:

No olvides agradecer a quien te ayuda o intenta ayudar, y en este foro es mediante el corazoncito que hay en la parte inferior derecha

 

Expand  

JSDJSD intentand adaptar tu aporte a una necesidad

Private Sub ComboBox1_Change()
Dim Filas, i, ii As Integer

With Hoja2
    Filas = .Range("C" & Rows.Count).End(xlUp).Row
    ListBox1.RowSource = ""
    If ComboBox1.Value = "" Then Exit Sub
    ListBox1.AddItem
    For i = 6 To Filas
        If .Cells(i, 6) = ComboBox1 Then
            Me.ListBox1.AddItem .Cells(i, 1)
            Me.ListBox1.List(Me.ListBox1.ListCount - 1, 1) = .Cells(i, 1).Offset(0, 1) ' Aqui hay que configurar la columa (Columna 2)
            Me.ListBox1.List(Me.ListBox1.ListCount - 1, 2) = .Cells(i, 1).Offset(0, 2)
            Me.ListBox1.List(Me.ListBox1.ListCount - 1, 3) = .Cells(i, 1).Offset(0, 3)
            Me.ListBox1.List(Me.ListBox1.ListCount - 1, 4) = .Cells(i, 1).Offset(0, 4)
            Me.ListBox1.List(Me.ListBox1.ListCount - 1, 5) = .Cells(i, 1).Offset(0, 5)
            Me.ListBox1.List(Me.ListBox1.ListCount - 1, 6) = .Cells(i, 1).Offset(0, 6)
            Me.ListBox1.List(Me.ListBox1.ListCount - 1, 7) = .Cells(i, 1).Offset(0, 7)
            Me.ListBox1.List(Me.ListBox1.ListCount - 1, 8) = .Cells(i, 1).Offset(0, 8)
            Me.ListBox1.List(Me.ListBox1.ListCount - 1, 9) = .Cells(i, 1).Offset(0, 9)
            Me.ListBox1.List(Me.ListBox1.ListCount - 1, 10) = .Cells(i, 1).Offset(0, 10)
            Me.ListBox1.List(Me.ListBox1.ListCount - 1, 11) = .Cells(i, 1).Offset(0, 11)
            Me.ListBox1.List(Me.ListBox1.ListCount - 1, 12) = .Cells(i, 1).Offset(0, 12)
            Me.ListBox1.List(Me.ListBox1.ListCount - 1, 13) = .Cells(i, 1).Offset(0, 13)
            Me.ListBox1.List(Me.ListBox1.ListCount - 1, 14) = .Cells(i, 1).Offset(0, 14)
            Me.ListBox1.List(Me.ListBox1.ListCount - 1, 15) = .Cells(i, 1).Offset(0, 15)
            Me.ListBox1.List(Me.ListBox1.ListCount - 1, 16) = .Cells(i, 1).Offset(0, 16)
        Else
        'No hacer nada
        End If
    Next i

    For ii = 0 To 4
        ListBox1.List(0, ii) = .Cells(1, ii + 1)
    Next ii

End With

End Sub


Private Sub UserForm_Initialize()


With Me.ListBox1
    .ColumnCount = 16
    .ColumnWidths = "20 pt; 120 pt; 50 pt; 60 pt"
    .RowSource = "'" & Hoja2.Name & "'!A5:P" & Hoja2.Range("A" & Rows.Count).End(xlUp).Row
End With

 ComboBox1.RowSource = "'" & Hoja2.Name & "'!C5:C" & Hoja2.Range("C" & Rows.Count).End(xlUp).Row



End Sub

No he sido capaz de comprender esta parte:

For ii = 0 To 4
        ListBox1.List(0, ii) = .Cells(1, ii + 1)
    Next ii

Podrías corregir mis errores.

 

Saludos

JB

publicado
  En 21/7/2020 at 4:34 , Jose BN dijo:

No he sido capaz de comprender esta parte:

For ii = 0 To 4
        ListBox1.List(0, ii) = .Cells(1, ii + 1)
    Next ii
Expand  

Este ciclo es simplemente para poner el encabezado en el listbox.

con respecto a lo de adaptar sube tu archivo y comenta lo que necesitas.

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

  • 109 ¿Te parecen útiles los tips de las funciones? (ver tema completo)

    1. 1. ¿Te parecen útiles los tips de las funciones?


      • No
      • Ni me he fijado en ellos

  • Ayúdanos a mejorar la comunidad

    • Donaciones recibidas este mes: 0.00 EUR
      Objetivo: 130.00 EUR
  • Archivos

  • Estadísticas de descargas

    • Archivos
      189
    • Comentarios
      99
    • Revisiones
      29

  • Crear macros Excel

  • Mensajes

    • Hola Buenas Noches, Me podrán ayudar a resolver un problema con una planilla que tengo, les comento brevemente. Tengo un archivo que cuenta con 2 hojas, la primera se llama "Movimientos" que básicamente muestra los productos con quiebres que se presentan y la hoja "Producción" que como su nombre lo dice son las producciones de cada producto según fecha de creación. Lo que necesito es lo siguiente: Cada vez que agregue una producción en la hoja "producción", debo ingresar el código creado su cantidad y lote respetivamente, además de la fecha en que se realiza la producción, en caso que sea mayor a las 12:00 se considera PM sino AM. Lo complejo es acá en la otra hoja llamada Movimientos: Esta hoja contiene una columna que se llama "Saldo", que básicamente es la diferencia de lo producido vs el quiebre en esa fecha. Una columna llamada "Cumple", que significa que ese pedido lleva si o no el producto con quiebre. Y una columna "Se preparo", que es si el pedido se preparo o no. Lo complicado viene acá es que si la fecha de la producción que ingrese en la hoja "Produccion", se hace después de la fecha de la hoja movimientos no me debe contar esa producción para efecto de la columna Saldos, si la fecha es igual o menor si se considera y ese saldo que queda disponible se puede ocupar para futuros ingresos de pedidos. Otra conducción es que las producciones siempre se deben asignar al pedido más antiguo de ese código salvo que la fecha de entrega ya haya pasado. La columna "Cumple" es básicamente para poder generar un KPI donde me indique cuales producciones se cumplieron con el plazo y cuales No. Espero me puedan ayudar ya que tengo la siguiente formula pero no sirve ya que me toma las unidades totales y no cumple con la restricción del horario. =SUMAR.SI(Produccion!A:A; $A2; Produccion!C:C) - SUMAR.SI.CONJUNTO($E$2:$E2; $A$2:$A2; A2)) Muchas gracias. Ejemplo..xlsx
    • Hola a ambos, Prueba con: =BYROW(G5:G6;LAMBDA(x;UNIRCADENAS(" - ";1;FILTRAR(E5:E10;B5:B10=x)))) Saludos,
    • Si tienes office 365 puedes usar algo como FILTER ó TEXTJOIN y si no tienes, entonces se puede jugar con las formulas, pero no te recomiendo mucho si son muchos datos, de todas maneras te dejo una fórmula y en vba, ya tu decides cual ocupar, vale Saludos BUSCAR.xlsm
    • Buenos días mis estimados Familia ayudaexcel,  Favor quisiera solicitar su gentil soporte con lo siguiente: Necesito una formula que al buscar encuentre el valor inicial de busqueda y dea todo los resultados encontrado en una celda como ejemplo. si este producto tienes 4 cantidades esta al hacer una formula de busqueda me dea el resultado de las 4 en una celda, dejo el adjunto a espera de su gran soporte.   BUSCAR.xlsx
    • Saludos Sr @Israel Cassales espero este bien quise verificar bien su solución y que las modificaciones que hice funcionarán adecuadamente y al respecto debo decir que su aporte es excelente ya que no solo me ayudo a resolver lo que necesitada sino que también me ayudo a solventar dos cosas más por lo cual estoy muy agradecido 
  • Visualizado recientemente

    • No hay usuarios registrado para ver esta página.
×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.