Usar combobox como filtro y obtener resultados en otra hoja.

Complicada mi segunda macro, ya invertí el código anterior del cual te envía información a tu correo y ahora creo que seria mejor realizar un combobox, solo que no encuentro la forma de realizar esta parte, eh creado un userform con este combobox y tengo esta parte:

Tengo la idea de como hacer lo demás, como dicen los programadores tengo la lógica mas no el código que necesito para que funcione mi macro; había pensando en que como estoy manejando muchos datos en una solo columna es un ID no puedo hacer un filtro por cada uno ya por ejemplo tengo ID's asi: 19485786, 19483098, 19310972, etc.. Que se compone de 8 dígitos los primero 4 dígitos son iguales los restantes 4 cambian, lo cual hacer filtro para cada ID esta en chino, en mi combobox me gustaría que pudieras escoger estos 5:
1948
1931

1905
1871

Código diferente a estos

Si por ejemplo selecciona el 1948 me gustaría que se fuera a buscar a la hoja donde tengo todos esos datos, todos aquellos ID que comiencen con ese código sin importar los restantes 4 números de su código, y me los extraiga
en otra hoja dentro del mismo libro junto con toda su fila es decir
este ID se encuentra desde A2 hasta A12000 entonces me extraería los datos
de la fila 2 B2, C2, H2 de acorde a la celda donde este su dato, etc...

1 respuesta

Respuesta
1

Copia la siguiente macro en tu userform

Tienes que tener un Combobox llamada combobox1 y un commandbutton llamado commandbutton1

Prueba y me comentas

Private Sub CommandButton1_Click()
'Copia lo selccionado en el combo
'Por.Dam
    ActiveSheet.AutoFilterMode = False
    Application.CutCopyMode = False
    Rows("1:1").Select
    Selection.AutoFilter
    mayor = ">=" & ComboBox1 & "0000"
    menor = "<=" & ComboBox1 & "9999"
    Selection.AutoFilter Field:=1, Criteria1:=mayor, Operator:=xlAnd, _
        Criteria2:=menor
    Range("A1").Select
    Range(Selection, Selection.End(xlToRight)).Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Sheets("Hoja2").Select
    ufila = Cells(Rows.Count, 1).End(xlUp).Row + 1
    Cells(ufila, 1).Select
    ActiveSheet.Paste
    Sheets("Hoja1").Select
    ActiveSheet.AutoFilterMode = False
    Application.CutCopyMode = False
End Sub
Private Sub UserForm_Activate()
'Por.Dam
Dim col As New Collection
    Set hoja = Worksheets("Hoja1")
    hoja.Select
    'ufila = hoja.Cells(hoja.Rows.Count, 1).End(xlUp).Row
    On Error Resume Next
    For i = 1 To hoja.Cells(hoja.Rows.Count, 1).End(xlUp).Row
        col.Add Item:=Left(hoja.Cells(i, 1).Value, 4), _
        Key:=CStr(Left(hoja.Cells(i, 1).Value, 4))
    Next i
    For i = 1 To col.Count
        Me.ComboBox1.AddItem col(i)
    Next i
End Sub

Saludos. Dam
Si es lo que necesitas, por favor, podrías finalizar la pregunta. Gracias

P.d. Y esto que comentas "como dicen los programadores tengo la lógica mas no el código que necesito para que funcione mi macro", Nunca lo había escuchado, la frase que yo utilizaba era: “si lo piensas, se puede”, pero no ponía como excusa que no tenía el código, bueno lo que dices, suena como a excusa para no terminar algo, jajaja, no es cierto, es broma, no me hagas mucho caso.

Muchas gracias Dam, bueno yo no soy programadora, solo soy una humilde trabajadora, no es que no quiera hacer las cosas, pero tengo problemas para desarrollar macros al nivel que ustedes los expertos lo hacen.

De hecho eh estado trabajando en la macro pero en otras cosas junto con lo del combobox, que por cierto ya probé el código que me envías, y es mas o menos lo que pretendo, te explico en mi columna E2 hacia abajo tengo estos códigos:

1871745269
1871745339
1871745409
1871745415
1871746409
1871746497
1871747003
1871746996
1871746855
1871746843
1871747228
1871747364
1871747373
1871747933
1871748391
1871748544
1871748777

1905633288
1905633286
1931603064
1931603063
1931603061
1931603065
1931603060
1931603062
1905633289
1948600158
1948600162
1948600161
1948600155
1948600159
1905633285
1905633284
1905633287

si observas los primeros 4 números son los que me gustaría estuvieran en el combobox, porque si lo pusiera de la manera en la que tu me hiciste favor de enviarme el código, seria elegir de uno por uno ya que los 6 dígitos restantes no son iguales, lo que yo tenia pensado era solo en el combo poner esto:

1948
1931
1905
1871



En caso de elegir alguna de los cuatro en este caso supongamos elijo 1931 me traería en la hoja 2 todos los que tengan 1931

1931603064
1931603063
1931603061
1931603065
1931603060
1931603062


JUNTO CON TODA LA FILA, no se me explique?



Saludos Dam y nuevamente gracias por tu gran ayuda y conocimiento.

Eso justamente hace la macro, tienes que adaptarla a la columna donde están los ID, como en la pregunta inicial no me dijiste en qué columna esta tu ID, yo le puse que está en la columna A.

Vamos a hacer lo siguiente, te pido de favor que muevas tus ID a la columna A y hagas la prueba de la macro, verás que en el combo te pone los ID únicos de 4 dígitos.

Cuando seleccionas uno en el combo y le das click al commandbutton te copia los registros de ese ID a la hoja2.

Para que la macro funcione a la primera deberás poner en tu pregunta, en qué celda están los datos, como se llaman los libros y como se llaman las hojas, de lo contrario, haré una macro con datos suponiendo todo lo anterior.

Saludos. Dam

De hecho si mencionaste : "este ID se encuentra desde A2 hasta A12000 ", por eso lo puse en la columna A.

También mencionaste que el Id era de 8 y ahora lo pones de 10, pero no importa, la macro lee los primeros 4.

Espero que puedas probar la macro tal como está, si no, te envío mi archivo de pruebas para que veas el funcionamiento.

Saludos. Dam

Perdón por no especificar bien las cosas, gracias por tu paciencia Dam; la macro funciona bien ahora eh movido el ID a la columna A, lo único que no se que este haciendo yo, pero al momento de extraer la información a la hoja 2 solo me trae el primer registro que encontró, no se si sea error mio (lo mas probable es que si) una gran disculpa por gran ignorancia pero como te mencionaba soy nueva en todo esto, y hay cosas que no se ni como hacerle.

Anexo código:

Private Sub CommandButton1_Click()
'Copia lo selccionado en el combo
ActiveSheet.AutoFilterMode = False
Application.CutCopyMode = False
Rows("2:2").Select 'EN ESTA PARTE CAMBIE DE 1:1 A 2:2 PARA QUE ME ARROJARA INFO Y NI ASI QUEDO..
Selection.AutoFilter
mayor = ">=" & ComboBox1 & "0000"
menor = "<=" & ComboBox1 & "9999"
Selection.AutoFilter Field:=1, Criteria1:=mayor, Operator:=xlAnd, _
Criteria2:=menor
Range("A1").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Sheets("Hoja2").Select
ufila = Cells(Rows.Count, 1).End(xlUp).Row + 1
Cells(ufila, 1).Select
ActiveSheet.Paste
Sheets("INFO-963-920").Select
ActiveSheet.AutoFilterMode = False
Application.CutCopyMode = False
End Sub
Private Sub CommandButton2_Click()
Unload UserForm1
End Sub
Private Sub UserForm_Activate()
Dim col As New Collection
Set hoja = Worksheets("INFO-963-920")
hoja.Select
'ufila = hoja.Cells(hoja.Rows.Count, 1).End(xlUp).Row
On Error Resume Next
For i = 1 To hoja.Cells(hoja.Rows.Count, 1).End(xlUp).Row
col.Add Item:=Left(hoja.Cells(i, 1).Value, 4), _
Key:=CStr(Left(hoja.Cells(i, 1).Value, 4))
Next i
For i = 1 To col.Count
Me.ComboBox1.AddItem col(i)
Next i
'Unload UserForm1
Application.ScreenUpdating = True
End Sub

Gracias por tu gran trabajo y tu dedicación.

Te envío mi archivo de pruebas.

https://www.dropbox.com/s/wy7q1ll07zl1ogy/combo%20unicos.xls

Revísalo.

Saludos. Dam

Gracias Dam por el ejemplo, veo que si funciona; y en mi caso tal cual pegue los datos asi como me indicas, pero sigue sin funcionarme aun no puedo detectar como hacer para que me funcione, lo unnico que si observe es que por ejemplo yo tengo la información asi:

ID Nombre # Operación Emisión Cobrado
1948600167 CORONA TELLEZ RAMON 0181111904-7 11/08/2012 11/08/2012
1948600166 CORONA TELLEZ RAMON 0181111903-9 11/08/2012 11/08/2012
1948600162 VALENZUELA PONCE XOCHILT 0217360503-7 11/08/2012 11/08/2012
1948600161 VALENZUELA PONCE XOCHILT 0217360504-5 11/08/2012 11/08/2012
1948600159 ROJAS MALDONADO RICARDO 0230771001-8 11/08/2012 11/08/2012
1948600158 SOTO BELMONTE MARÍA EDITH 0211840003-1 11/08/2012 11/08/2012
1948600155 PALEO AYALA JUANA 0224566903-7 11/08/2012 11/08/2012

Perdón se envío antes de poner mi conclusión, creo que cuando en alguna de las columnas restantes se repite algún dato no me extrae la información, ya que por el ID no hay problema pero si se repite el nombre, #operación en alguna otra fila., no me toma en cuenta, esta información, como se podría hacer?

SAludos y gracias

Envío archivo con información. Tal vez es mi maquina la que no procesa bien, ya cheque el código y no hay problema.

https://www.dropbox.com/s/fv5cj1k7tbg7spi/combo%20unicos_ejemplo.xls

Qué crees, que si importa si son 8 ó 10 caracteres en el consecutivo, tengo estas líneas en el código

mayor = ">=" & ComboBox1 & "0000"
menor = "<=" & ComboBox1 & "9999"

Ese código es para 8 caracteres.

Reemplaza las líneas por estas:

mayor = ">=" & ComboBox1 & "000000"
menor = "<=" & ComboBox1 & "999999"

Prueba y me comentas

Saludos. Dam

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas