Filtrar datos de una columna

Me gustaría saber si es posible filtrar datos de una columna por medio de un botón que esta en un formulario al dar clic este me filtre los valores deseados de columna O me saque todos los valores que contengan la palabra "SALIDA DE CONTENEDORES HH" Una vez lo saque no se si por medio de otro botón deje la columna otra vez completa para realizar otro filtro diferente.

3 Respuestas

Respuesta
1
Sub FiltrarSalidaContenedoresHH()
    Dim columna As Range
    Dim celda As Range
    ' Asegurarse de cambiar "Sheet1" por el nombre de la hoja en la que deseas realizar el filtrado
    Set columna = ThisWorkbook.Worksheets("Sheet1").Range("A:A")
    ' Filtrar los valores que contengan "SALIDA DE CONTENEDORES HH" en la columna
    columna.AutoFilter Field:=1, Criteria1:="*SALIDA DE CONTENEDORES HH*", Operator:=xlFilterValues
End Sub

Volver a mostrar todos los datos:

Sub MostrarTodosLosDatos()
    Dim columna As Range
    ' Asegurarse de cambiar "Sheet1" por el nombre de la hoja en la que deseas realizar el filtrado
    Set columna = ThisWorkbook.Worksheets("Sheet1").Range("A:A")
    ' Desactivar el filtro y mostrar todos los datos
    columna.AutoFilter
End Sub
Respuesta
3

1 - '... un botón que esta en un formulario al dar clic este me filtre los valores deseados de columna O...'

Como ejemplo, esta instrucción filtra la col O de un rango de datos, por el criterio guardado en una variable:

    dato3 = "*" & TextBox13.Value & "*"
    Range("$A$3:$R$" & Range("A" & Rows.Count).End(xlUp).Row).AutoFilter Field:=15, Criteria1:=dato3, Operator:=xlAnd

2 - '...me saque todos los valores que contengan la palabra "SALIDA DE CONTENEDORES HH...'

No me queda claro qué significa 'sacar todos los valores' : ¿Quitarlos de la hoja?, ¿Copiarlos en el formulario?. Aclara este punto un poco más.

3 - '... por medio de otro botón deje la columna otra vez completa...'

Para volver a mostrar todas las filas, o sea quitar el filtrado, esta sería la instrucción:

ActiveSheet. ShowAllData

Te invito a ver 2 modelos de filtros explicados en el video Nº 36 de mi canal: Filtro dinámico.

Podés descargar el libro completo con los 2 ejemplos desde aquí.

¡Gracias! lo requerido es que con un botón en formulario al dar clic este me filtre los valores deseados SALIDA DE CONTENEDORES HH. es decir queden mostrados en la hoja activa y cuando ya no lo requiera no se si con otro botón la hoja quede en su estado normal antes del filtrado master!!!

Bien, estos códigos te servirán. Solo ajusta las referencias de tu rango de datos. Te dejo las 2 opciones para el filtrado: o tomas el criterio desde un control de tu UF o lo dejas fijo.

Sub filtrando_O()
dim dato3 as string
'dato3 = "*" & TextBox13.Value & "*"    'si el dato se toma de algún control del formulario
dato3 = "*SALIDA DE CONTENEDORES HH*"  'si el dato es fijo
'ajustar el rango de col que tendrá tu hoja, incluyendo al fila de títulos:
    Range("$A$2:$R$" & Range("A" & Rows.Count).End(xlUp).Row).AutoFilter Field:=15, Criteria1:=dato3, Operator:=xlAnd
End Sub
Sub quitaFiltros()
If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData
End Sub

También las macros de Rafael te servirán, si la hoja no tiene aplicados los filtros. Aunque debes ajustar la instrucción del SET indicando que debe filtrar la col O:O, en lugar de A:A y ajustando el nombre de tu hoja.

Sdos!

¡Gracias! master siempre puntual y eficaz!!

Buen día master; de acuerdo al código me parece muy versátil y cómodo a la hora de usarlo pero dentro de la columna tengo valores como "SALIDA DE CONTENEDORES HH", "INGRESO DE CONTENEDORES HH", "¿ingreso de contenedores emt" e "INGRESO DE VEHÍCULO LLENO DE CARGA" la columna me queda en blanco no se si sea por que hay coincidencias de palabras como "CONTENEDORES"? GRACIAS!

¿Ya encontraste dónde está tu problema con la macro del filtro?

Fijate que la macro ahora solo evalúa el texto que nos dejaste al inicio de tu consulta.

Pero si tendrás varios criterios podrías indicarle en la variable 'dato' como te dejé en mi primer respuesta. Esta variable puede tomar el valor de algún control. (Siempre deja todas las aclaraciones para obtener un código más ajustado a tu necesidad).

Viendo tu nueva consulta, quizás puedas tomar el contenido del Label y entonces sería :

dato3 = Label1.Caption

Sdos!

Respuesta
1

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas