Filtro con hipervínculo

Tengo un fichero Excel con un montón de códigos numéricos que van desde el 00000 al 99999. Lo que quiero hacer es otro fichero Excel que al poner un valor en una celda que estará dentro del rango anterior, por ejemplo 11111, haciendo click en esta celda, me filtre todos los artículos de la otra hoja que tengan 11111.
He conseguido algo parecido, pero no de una manera totalmente automática. Lo que he hecho ha sido lo siguiente:
He hecho una tabla dinámica, filtro yo manualmente todos los datos de 11111, y los pego en una hoja dentro de ese fichero, esa zona la guardo como área de trabajo y hago un hipervínculo desde el otro archivo a esta zona de trabajo.
Salirme me sale, pero me imagino que tiene que haber una forma más automática.

1 respuesta

Respuesta
1
Para ayudarte tengo un par de preguntas:
- Los códigos están en filas o columnas
- Los artículos que información tienen, es decir código de producto, ¿nombre?
- Como quieres que se muestre la información.
Un saludo, a la espera de tus comentarios
Los códigos están en columnas.
Los artículos tienen varias columnas y me gustaría que saliese un listado con la información que contienen las columnas
Con este script podrás obtener lo que necesitas.
Sub resumen()
'seteo f que me ayudar en el ciclo
f = 2
'activo la celda A2 de la hoja "Todos" en tu caso solo modifica el nombre por el de la hoja
'en la que tienes todos los datos
Sheets("Todos").Activate
Range("A" & f & "").Activate
    'inicio un ciclo que se ejecuta hasta que encuentre una celda vacia
    Do While Not IsEmpty(ActiveCell)
        'pregunto si el valor de la celda activa (A2) de la hoja Todos
'es igual al valor de la celda (B2) de la hoja Resumen
        If ActiveCell.Value = Worksheets("Resumen").Range("B2").Value Then
            'si son iguales, selecciona el rango de la A2 a la D2, en tu caso solo modifica el rango para la selección
            Worksheets("Todos").Range("A" & f & ":D" & f & "").Select
            'copia el rango seleccionado
            Selection.Copy
            'activamos la hoja Resumen
            Worksheets("Resumen").Select
            Worksheets("Resumen").Range("A5").Activate
                'Ahora hacemos un if en el cual evaluamos si la celda A5 de la hoja Resumen esta vacia
                If ActiveCell.Text = "" Then
                'si se cumple la condicion entonces pega la informacion en dicha celda (A5)
                ActiveSheet.Paste
                'sino
                Else
                    'preguntamos si la celda que le sigue, en este caso A6 esta vacia
                    If ActiveCell.Offset(1, 0).Value = "" Then
                    'si se cumple la condicion entonces pega la informacion en dicha celda (A6)
                    ActiveCell.Offset(1, 0).Activate
                    ActiveSheet.Paste
                    Else
                    'sino entonces se corre hasta la ultima celda con datos + 1
                    Selection.End(xlDown).Select
                    ActiveCell.Offset(1, 0).Activate
                    'y pega la informacion
                    ActiveSheet.Paste
                    End If
                End If
                'incrementamos f y activamos la siguiente celda de la hoja Todos
                f = f + 1
                Worksheets("Todos").Select
                Worksheets("Todos").Range("A" & f & "").Activate
        Else
        f = f + 1
        Worksheets("Todos").Select
        Worksheets("Todos").Range("A" & f & "").Activate
        End If
        Application.CutCopyMode = False
        Loop
End Sub
En caso de no ser muy claro o no te sirve no dudes en preguntarme nuevamente, en caso contrario no olvides dejar un comentario y cerrar la pregunta.
Muchas gracias
No he tenido tiempo para hacerlo todavía, lo intentaré esta tarde, pero de todos modos muchísimas gracias.
Un saludo

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas