Macro para filtrar añadiendo un valor a una celda

Primero les paso la macro de la que parto

Sub FILTRADO()

    Range("A5:AA5").Select

    If ActiveSheet.FilterMode = True Then ActiveSheet.ShowAllData

ActiveSheet.Range("$A$5:$AA$5" & Range("A" & Rows.Count).End(xlUp).Row).AutoFilter Field:=4, Criteria1:=[K2]

End Sub

El problema, Estoy filtrando por la columna 4 (D), pero dentro de esa columna hay muchos valores en diferentes columnas, la idea es que filtre dentro de D, todas las columnas que están debajo

¿Alguien sabe como solucionar esto?

Adjunto a modo ejemplo simplificado para ayudar a entender

Cualquier cosa me piden el archivo original si no se entiende

Por ejemplo al filtrar con criterio 124

Me da la fila 1 solamente cuando ese valor también esta en todas las demás filas

1 Respuesta

Respuesta
1

H o l a:

Pero tienes una celda combinada, para ti es la "D" pero para excel siguen siendo las columnas D, E y F

Entonces tu estás filtrando la columna D, y es correcto, en la columna D solamente tienes un 124.

Si quieres que te aparezcan los 124 que tienes en la columna "E", deberás filtrar por la columna 5.

ActiveSheet.Range("A5:AA" & Range("A" & Rows.Count).End(xlUp).Row).AutoFilter Field:=5, Criteria1:=[K2]

Otra cosa, en tu filtro tienes esto: 

"$A$5:$AA$5" & Range("A"

Y debería ser:

"$A$5:$AA$" & Range("A"

Te sobra un 5.


Con autofiltro no podrías filtrar los valores 124 que tienes en la columna "D" y también los que tienes en la columna "E".

Lo que se puede hacer es una macro que revise fila por fila, las columnas "D", "E", "F", etc, si no hay un 124, entonces que oculte la fila.


Pero no sé si quieras filtrar todo lo que diga 124 o solamente quieres filtrar la columna E.


Avísame si quieres que te ayude con la macro para revisar fila por fila. Si es así, tienes que decirme:

En cuál fila están tus encabezados.

En cuál fila empiezan tus datos.

Y cuáles columnas hay que revisar.


Perfecto, muchas gracias por tu pronta respuesta
Me interesa la macro de revisar fila por fila te paso los datos que necesitas
acá te envió una foto de una sección de mi hoja de excel, la misma continua hacia abajo

Los escabezados están en A,B,C y el ultimo "desde D a M" que excel lo toma como D me parece.

Los datos empiezan en la fila 6
Hay que revisar Desde "D" hasta "M"

Te voy a tratar de explicar que quiero hacer, por si ayuda,
yo busco 15-2634-00 por ejemplo (esta en D6), por lo tanto me tiene que quedar visible toda la fila del manual (columna A) que tenga dicho código, en este caso, 76-1052-11 (fila 6 y 7)

Saludos y gracias nuevamente!

Ya no entendí, ¿hay qué buscar en la columna A? ¿O hay que buscar en las columnas D a M?

En tu primer ejemplo, en la imagen se ve que en la celda D6 está el dato: "15-2634-00".

Pero en tu segundo ejemplo el dato "76-1052-11 ", no está en ninguna de las columnas de la D a la M, lo que veo es que se encuentra en la columna "A"

Me comentas.

Perdón por marearte,
Quiero buscar en columnas D a M
por ejemplo 15-2634-00

y que el resultado lo de en forma de lista, todas las filas que tengan dicho valor (al estilo de como funcionan los filtros)

ignorar el ultimo párrafo de mi mensaje anterior

H o l a:

Te anexo la macro, revisa las celdas de la D a la M según el contenido de la celda K2, si quieres que se muestren todas las celdas, deja en blanco la celda K2 y ejecuta la macro.

Sub FiltrarHojas()
'Por.Dante Amor
    Application.ScreenUpdating = False
    u = ActiveSheet.UsedRange.Rows(ActiveSheet.UsedRange.Rows.Count).Row
    If u < 6 Then u = 6
    Rows(6 & ":" & u).EntireRow.Hidden = False
    If [K2] = "" Then Exit Sub
    For i = 6 To u
        existe = False
        For j = Columns("D").Column To Columns("M").Column
            If Cells(i, j) = [K2] Then
                existe = True
                Exit For
            End If
        Next
        If existe = False Then
            Rows(i).EntireRow.Hidden = True
        End If
    Next
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas