Note: The other languages of the website are Google-translated. Back to English

¿Cómo volver a aplicar automáticamente el filtro automático cuando los datos cambian en Excel?

En Excel, cuando aplica el Filtrar función para filtrar datos, el resultado del filtro no se cambiará automáticamente con los cambios de datos en sus datos filtrados. Por ejemplo, cuando filtro todas las manzanas de los datos, ahora cambio uno de los datos filtrados a BBBBBB, pero el resultado no se cambiará tan bien como se muestra en la siguiente captura de pantalla. En este artículo, hablaré sobre cómo volver a aplicar el filtro automático automáticamente cuando los datos cambian en Excel.

doc auot actualizar filtro 1

Vuelva a aplicar automáticamente el filtro automático cuando los datos cambian con el código VBA


flecha azul burbuja derecha Vuelva a aplicar automáticamente el filtro automático cuando los datos cambian con el código VBA

Normalmente, puede actualizar los datos del filtro haciendo clic en la función Volver a aplicar manualmente, pero aquí, presentaré un código VBA para que actualice los datos del filtro automáticamente cuando cambien los datos, haga lo siguiente:

1. Vaya a la hoja de trabajo cuyo filtro desea actualizar automáticamente cuando cambien los datos.

2. Haga clic con el botón derecho en la pestaña de la hoja y seleccione Ver código en el menú contextual, en el emergente Microsoft Visual Basic para aplicaciones ventana, copie y pegue el siguiente código en la ventana del módulo en blanco, vea la captura de pantalla:

Código de VBA: vuelva a aplicar el filtro automáticamente cuando cambien los datos:

Private Sub Worksheet_Change(ByVal Target As Range)
   Sheets("Sheet3").AutoFilter.ApplyFilter
End Sub

doc auot actualizar filtro 2

Nota:: En el código anterior, Hoja 3 es el nombre de la hoja con filtro automático que utiliza, cámbielo según sus necesidades.

3. Y luego guarde y cierre esta ventana de código, ahora, cuando cambie los datos filtrados, el Filtrar La función se actualizará automáticamente de una vez, vea la captura de pantalla:

doc auot actualizar filtro 3


Las mejores herramientas de productividad de oficina

Kutools para Excel resuelve la mayoría de sus problemas y aumenta su productividad en un 80%

  • Reutilizar: Inserte rápidamente fórmulas complejas, gráficos y cualquier cosa que hayas usado antes; Cifrar celdas con contraseña; Crear lista de distribución y enviar correos electrónicos ...
  • Barra de súper fórmula (edite fácilmente varias líneas de texto y fórmulas); Diseño de lectura (leer y editar fácilmente un gran número de celdas); Pegar en rango filtrado...
  • Combinar celdas / filas / columnas sin perder datos; Contenido de celdas divididas; Combinar filas / columnas duplicadas... Prevenir celdas duplicadas; Comparar rangos...
  • Seleccione Duplicado o Único Filas; Seleccionar filas en blanco (todas las celdas están vacías); Super Find y Fuzzy Find en muchos libros de trabajo; Selección aleatoria ...
  • Copia exacta Varias celdas sin cambiar la referencia de la fórmula; Crear referencias automáticamente a varias hojas; Insertar viñetas, Casillas de verificación y más ...
  • Extraer texto, Agregar texto, Eliminar por posición, Quitar espacio; Crear e imprimir subtotales de paginación; Convertir entre contenido de celdas y comentarios...
  • Súper filtro (guardar y aplicar esquemas de filtros a otras hojas); Orden avanzado por mes / semana / día, frecuencia y más; Filtro especial en negrita, cursiva ...
  • Combinar libros y hojas de trabajo; Combinar tablas basadas en columnas clave; Dividir datos en varias hojas; Conversión por lotes de xls, xlsx y PDF...
  • Más de 300 potentes funciones. Compatible con Office/Excel 2007-2021 y 365. Compatible con todos los idiomas. Fácil implementación en su empresa u organización. Funciones completas Prueba gratuita de 30 días. Garantía de devolución de dinero de 60 días.
pestaña kte 201905

Office Tab lleva la interfaz con pestañas a Office y hace que su trabajo sea mucho más fácil

  • Habilite la edición y lectura con pestañas en Word, Excel, PowerPoint, Publisher, Access, Visio y Project.
  • Abra y cree varios documentos en nuevas pestañas de la misma ventana, en lugar de en nuevas ventanas.
  • ¡Aumenta su productividad en un 50% y reduce cientos de clics del mouse todos los días!
officetab parte inferior
Comentarios (36)
5 clasificado de 5 · 1 calificaciones
Este comentario fue minimizado por el moderador en el sitio
hola, como puedo usar todo esto en google finance? gracias
Este comentario fue minimizado por el moderador en el sitio
Genial.. realmente lo necesito
Este comentario fue minimizado por el moderador en el sitio
Quiero un cambio en una hoja para que varias otras hojas se filtren automáticamente, ¿cómo cambio este código? Ej.: se cambia la HojaA, lo que hace que la Hoja1, la Hoja2 y la Hoja3 apliquen su filtro automático. ¡Gracias!
Este comentario fue minimizado por el moderador en el sitio
Estoy haciendo esto para un frente en la hoja donde la celda está configurada en = hoja1! E6. No aplicará filtro cuando cambie. Si cambio el número en la hoja trasera, se ajusta el frente pero no filtra. Si ajusta la fórmula para filtrar los criterios, se vuelve a aplicar. ¿Que puedo hacer?
Este comentario fue minimizado por el moderador en el sitio
Use
Private Sub Work_Change (ByVal Target As Range)
Activesheet.AutoFilter.ApplyFilter
End Sub
Este comentario fue minimizado por el moderador en el sitio
No puedo hacer que esto funcione para mí en absoluto. Estoy tratando de tomar de una hoja maestra y hacer que solo tome los trabajos que se aplican a ciertos gerentes de proyecto en cada pestaña que está con sus nombres. También quiero que se actualice automáticamente cuando hago cambios.
Este comentario fue minimizado por el moderador en el sitio
este comando todo falso no hace nada. intento totalmente pero no sirve de nada.
Este comentario fue minimizado por el moderador en el sitio
Funciona muy bien y me ahorra mucho tiempo y problemas... Realmente un gran consejo... Muchas gracias por su ayuda
Este comentario fue minimizado por el moderador en el sitio
Esta solución funciona perfectamente. ¡Gracias por escribirlo! Si alguien tiene problemas, hay algunas cosas a considerar.

Primero, el evento Worksheet_Change se llama hoja por hoja. Esto significa que si tiene varias hojas que tienen filtros que necesita actualizar, deberá responder a todos esos eventos. Una subrutina Worksheet_Change para cada hoja de trabajo, no una subrutina para todo el libro de trabajo (una excepción: consulte la nota a continuación).

En segundo lugar, y como continuación del primero, el código debe colocarse en el módulo de código específico de la hoja de trabajo que se va a monitorear. Es fácil (sin darse cuenta) cambiar los módulos de código una vez que ingresa al editor de VB, por lo que debe tener cuidado de colocarlo específicamente en la hoja que desea monitorear para cambios de datos.

Tercero, esto no está confirmado, pero posiblemente sea un punto de error. El ejemplo usa nombres de hoja de "Hoja1", "Hoja2", etc. Si cambió el nombre de las hojas, es posible que deba actualizar el código. Tenga en cuenta que en el ejemplo, a Sheet7 se le ha dado el nombre "dfdf". Si quisiera actualizar el filtro allí, necesitaría usar;
Hojas("dfdf").AutoFilter.ApplyFilter
no;
Hojas("Hoja7").Autofiltro.AplicarFiltro

Sería bueno actualizar el artículo incluyendo un ejemplo con una hoja renombrada.


Finalmente, si desea monitorear una hoja en busca de cambios de datos, pero actualizar los filtros en varias hojas, solo necesita una subrutina, ubicada en el módulo de código de la hoja de trabajo que está monitoreando. El código se verá así;

# (el código debe colocarse en la hoja de trabajo para monitorear los cambios de datos)
Sub hoja de trabajo privada_Cambio (según el rango de destino ByVal)
Hojas("Hoja1").Autofiltro.AplicarFiltro
Hojas("Hoja2").Autofiltro.AplicarFiltro
Hojas("Hoja3").Autofiltro.AplicarFiltro
Hojas("Hoja4").Autofiltro.AplicarFiltro
End Sub
Este comentario fue minimizado por el moderador en el sitio
Hola mike,
Gracias por tu detallada explicación.
Este comentario fue minimizado por el moderador en el sitio
Gran explicación, gracias.

Pero, ¿cómo activo Sheets("Sheet3").AutoFilter.ApplyFilter cuando se crea una nueva hoja?
Como no puedo escribir el código que mencionaste en una hoja que aún no existe
Este comentario fue minimizado por el moderador en el sitio
Bien, muchas gracias!
Este comentario fue minimizado por el moderador en el sitio
funciona como un campeón, y tan simple. ¡Muchas gracias!
Este comentario fue minimizado por el moderador en el sitio
Esto parece genial. ¿Puede decirme cómo hacer lo mismo para Ordenar, en lugar de Filtrar, por favor?
Este comentario fue minimizado por el moderador en el sitio
Hola Chris,
Puede ser, el siguiente artículo puede resolver su problema, consulte:

https://www.extendoffice.com/documents/excel/2592-excel-auto-sort-by-value.html

¡Por favor pruebalo!
Este comentario fue minimizado por el moderador en el sitio
Hola, eso funciona muy bien, sin embargo, solo cuando se cambian manualmente los datos en la tabla.

Tengo una tabla filtrada de estilo 'top ten/leader board' que se completa a partir de la entrada de datos en una hoja de trabajo separada (en realidad, los datos pasan por 3 hojas de trabajo antes de llegar a la tabla). Cuando se modifican los datos en la hoja de trabajo de ingreso de datos, las cifras de la tabla de clasificación se actualizan; sin embargo, el filtro no se actualiza automáticamente.
¿Alguna idea sobre cómo hacer eso?
Muy agradecido.
Alex
Este comentario fue minimizado por el moderador en el sitio
Tengo ella mismo problema. ¿Alguien puede ayudarnos?
Este comentario fue minimizado por el moderador en el sitio
Tengo el mismo problema. Estoy tratando de filtrar automáticamente la hoja 2 que contiene datos provenientes de la hoja 1. Solo funciona si cambio los datos en la hoja 2, no en la hoja 1.
¿Alguna idea sobre por qué esto no funciona y cómo solucionarlo?
Este comentario fue minimizado por el moderador en el sitio
Hola, esto parece funcionar muy bien, pero tengo problemas cuando hay más de un filtro en la misma hoja de trabajo (pestaña). Convertí el rango de celdas en una tabla para permitir filtros separados y múltiples dentro de la misma hoja de trabajo. Este ejemplo solo parece actualizar una de las tablas/filtros. ¿Alguna sugerencia sobre cómo actualizar TODAS las tablas/filtros dentro de una hoja de cálculo?

Muchas gracias,

tom
Este comentario fue minimizado por el moderador en el sitio
Hola Tom,
El código en este artículo funciona bien para varias tablas dentro de una hoja de trabajo, solo necesita presionar la tecla Intro después de cambiar los datos en lugar de hacer clic en otra celda.
Por favor pruebalo.
Este comentario fue minimizado por el moderador en el sitio
terima Kasih

sangat membantu
Este comentario fue minimizado por el moderador en el sitio
Esto no funciona con el filtro basado en la selección de listas. https://www.extendoffice.com/documents/excel/4113-excel-filter-based-on-list-selection.html
Este comentario fue minimizado por el moderador en el sitio
Brillante y sencillo de hacer. ¡Muchas gracias!
Este comentario fue minimizado por el moderador en el sitio
Hola,

Este código funciona muy bien, muchas gracias.

Sin embargo, tengo un pequeño problema: si cambio los valores en cualquier celda que no sea parte de la tabla, aparece un error de tiempo de ejecución que dice:

"Error en tiempo de ejecución '91':

Variable de objeto o Con variable de bloque no configurada"


Tengo opciones para depurar o finalizar, la opción para continuar está atenuada. Puedo hacer clic en "Finalizar" y el código sigue funcionando, sin embargo, es muy molesto tener que lidiar con esta ventana emergente después de cada cambio.

¿Alguien tiene una experiencia similar o alguna sugerencia sobre cómo solucionar esto?

¡Gracias!
Este comentario fue minimizado por el moderador en el sitio
Hola David,
Para resolver su problema, puede aplicar el siguiente código:

Sub hoja de trabajo privada_Cambio (según el rango de destino ByVal)
On Error Resume Next
Hojas("Hoja3").Autofiltro.AplicarFiltro
End Sub

¡Pruébalo, espero que te pueda ayudar!
Este comentario fue minimizado por el moderador en el sitio
Hola Skyyang,


He implementado su solución y de hecho está arreglada.

¡Muchas gracias!
Este comentario fue minimizado por el moderador en el sitio
Hola, he tenido el mismo problema, pegué el nuevo código y cambié el nombre de la hoja, pero luego no pasa nada, el filtro no se actualiza.
Este comentario fue minimizado por el moderador en el sitio
mismo problema aquí también, ¿alguna solución actualizada?
Este comentario fue minimizado por el moderador en el sitio
No puedo hacer que esto funcione en absoluto en Office 365
alguna sugerencia
Este comentario fue minimizado por el moderador en el sitio
Hola, muchas gracias por la ayuda. Algo no funciona bien para mí. Aquí está la historia.

Sheet1 tiene datos variables. Sheet3 tiene datos estáticos y filtro. Los criterios de filtro en "Hoja3" provienen de Hoja1. Sheet1 tiene datos que provienen de resultados filtrados en Sheet3.

Sheet3 tiene código:

Sub hoja de trabajo privada_Cambio de selección (rango de destino ByVal)
Rango("A1:U14").Acción de filtro avanzado:=xlFilterCopy, CriteriaRange:=Range("A22:U23"), CopyToRange:=Range("A25:U26"), Unique:=False
End Sub

Funciona muy bien si hago algo en Sheet3. No hay problemas. ¡Gracias!

Al principio tenía código en Sheet1:

Sub hoja de trabajo privada_Cambio (según el rango de destino ByVal)
Hojas("Hoja3").Autofiltro.AplicarFiltro
End Sub

Lo que resultó en el error "Error de tiempo de ejecución 91, variable de objeto o con bloque no establecido".

Cambié el código basado en los comentarios para que sea:

Sub hoja de trabajo privada_Cambio (según el rango de destino ByVal)
On Error Resume Next
Hojas("Hoja3").Autofiltro.AplicarFiltro
End Sub

Ahora no recibo un error, pero los datos en Sheet3 y, por lo tanto, Sheet1 no cambian. En otras palabras, el evento de aplicar el filtro a Sheet3 no ocurre cuando realizo un cambio en Sheet1. No importa si golpeo o haga clic en otra celda después de cambiar la celda de criterios de filtro de la Hoja3 que está configurada en la Hoja1.

Aparte, espero que si quisiera tener varias celdas en la Hoja 1 que causaran filtros en las Hojas 4 y 5 además de la Hoja 3, necesitaría el código de la Hoja 1 para leer:

Sub hoja de trabajo privada_Cambio (según el rango de destino ByVal)
On Error Resume Next
Hojas("Hoja3").Autofiltro.AplicarFiltro
Hojas("Hoja4").Autofiltro.AplicarFiltro
Hojas("Hoja5").Autofiltro.AplicarFiltro
End Sub

Gracias de nuevo!
Este comentario fue minimizado por el moderador en el sitio
Hola,

Este es un gran fragmento de código, gracias. El único problema que tengo es que estoy usando un menú desplegable en una hoja de gráfico separada. Si cambio manualmente el valor en la celda asociada con el menú desplegable, funciona. Pero cuando trato de usar el menú desplegable, no se actualiza. ¿Alguna idea?
Este comentario fue minimizado por el moderador en el sitio
De hecho, tengo datos de otro archivo de Excel que se importó en una hoja de Excel con el nombre "Base de datos". Luego importo estos datos en el mismo archivo de Excel pero en otra "Descripción general" de ExcelSheet. Quiero que cuando los datos cambien en la fuente original, el filtro se aplique en la hoja "Resumen". Gracias de antemano por el que me puede ayudar :). PS no puede usar VBA en la primera hoja de Excel
No hay comentarios publicados aquí todavía
Ver más
Deje sus comentarios
Publicar como invitado
×
Califica esta publicación:
0   Personajes
Ubicaciones sugeridas

Siganos

Copyright © 2009 - www.extendoffice.com. | Reservados todos los derechos. Energizado por ExtendOffice, | Mapa del Sitio
Microsoft y el logotipo de Office son marcas comerciales o marcas comerciales registradas de Microsoft Corporation en los Estados Unidos y / o en otros países.
Protegido por Sectigo SSL