¿Cómo actualizo automáticamente un filtro automático de Excel cuando se modifican los datos?
Caso de uso: cambio el valor de una celda a un valor que se filtró. Quiero ver desaparecer la fila actual sin tener que hacer nada más.
microsoft-excel
Sorin
fuente
fuente
Respuestas:
El intercambio del código con esto también parece ser el truco (al menos en Excel 2010):
fuente
Descubrí que cuando trabajaba con tablas, esto no funcionaba. El filtro no estaba en la hoja sino en la mesa. este código hizo el truco
Encontré la información aquí: http://www.jkp-ads.com/articles/Excel2007TablesVBA.asp
fuente
Haga clic derecho en el nombre de su hoja, elija "Ver código" y pegue el código a continuación. Después de pegar, haga clic en el icono de Excel debajo de "Archivo" en la esquina superior izquierda, o escriba Alt-F11, para volver a la vista de hoja de cálculo.
Esto habilitará la actualización automática. No olvide guardar el archivo en un formato con soporte de macro mentira
.xlsm
.fuente
También uso un VBA / Macro basado en un
Worksheet_Change
evento, pero mi enfoque es ligeramente diferente ... Ok, primero el código y luego las explicaciones:(Use la combinación de teclas Alt+ F11para que aparezca el panel de desarrollo y pegue el código en la hoja de trabajo que contiene el filtro que desea actualizar automáticamente).
En mi ejemplo, supongo que tengo un filtro simple en una sola columna (L en mi caso) y que mi rango de datos está en filas de 1 (incluso si puede contener encabezado) a 126 (elija un número lo suficientemente grande como para ser seguro). La operación es simple: a medida que algo cambia en mi hoja, el filtro en el rango especificado se elimina / vuelve a aplicar para que se actualice. Lo que necesita un poco de explicación aquí son Field and Criteria .
El campo es un desplazamiento de rango entero. En mi caso, solo tengo un filtro de una sola columna y el rango está formado por una sola columna (L), que es la primera en el rango (por lo tanto, uso 1 como valor).
El criterio es una cadena que describe el filtro que se aplicará al rango de datos. En mi ejemplo, quiero mostrar solo las filas donde la columna L difiere de 0 (por lo tanto, usé "<> 0").
Eso es todo. Para obtener más referencias sobre el método Range.AutoFilter, consulte: https://msdn.microsoft.com/en-us/library/office/ff193884.aspx
fuente
Solo para consolidar la (s) respuesta (s):
Sorin dice:
Haga clic derecho en el nombre de su hoja, elija "Ver código" y pegue el código a continuación. Después de pegar, haga clic en el icono de Excel debajo de "Archivo" en la esquina superior izquierda, o escriba Alt-F11, para volver a la vista de hoja de cálculo.
Esto habilitará la actualización automática. No olvide guardar el archivo en un formato compatible con macros .xlsm.
Y Chris usó este código (que acabo de hacer en 2010):
Si no expande la publicación, solo verá la respuesta larga. ;)
fuente
Lo sentimos, representante insuficiente para comentar. (Administradores, siéntanse libres de cortar esto en un comentario anterior). Respuesta del usuario "danicotra" que comienza con "Yo también uso un VBA / Macro basado en el evento Worksheet_Change, pero mi enfoque ..." con
"primero eliminar filtro
" y luego aplicarlo de nuevo
es la solución correcta cuando se usa Excel 2007+. Sin embargo .AutoFilter.ApplyFilter no es válido en XL03 y anteriores, así que muestro el camino a continuación.
Ruego a los verdaderos expertos y gurús que lean el código porque estoy bastante seguro de que es un material de primera calidad. Quizás el inexplicable recuento de votos negativos en esta respuesta se puede revertir cuando la gente ve lo que se hace a continuación.
danicotra usó un ejemplo simplificado. En realidad, puedes hacer esto de manera más general. Asumir con ActiveSheet para lo siguiente (o algún otro objeto de hoja):
Guarde el rango del autofiltro. Tiene columnas .AutoFilter.Filters.Count y (.AutoFilter.Range.Count / .AutoFilter.Filters.Count) filas, guardadas en rngAutofilter
Recopile en una matriz myAutofilters cada una de las 4 propiedades de cada uno de los elementos de Autofiltro .AutoFilter.Filters.Count, teniendo cuidado de evitar "errores definidos por la aplicación" cuando .On o .Operator son falsos. (myAutofilters se redirigiría al número de filas y columnas en el paso 1)
Apague el filtro pero conserve los menús desplegables con .ShowAllData
Para cada elemento de filtro que estaba .De acuerdo con su matriz guardada, restablezca 3 de las 4 propiedades de cada uno de los elementos de autofiltro .AutoFilter.Filters.Count. De nuevo, tenga cuidado de evitar los "errores definidos por la aplicación" cuando .Operator es falso, por lo que para cada elemento "i",
rngAutofilter.AutoFilter Field: = i, Criteria1: = myAutofilters (i, 2)
o
rngAutofilter.AutoFilter Field: = i, Criterio1: = myAutofilters (i, 2), Operador: = myAutofilters (i, 3), Criterio2: = myAutofilters (i, 4)
Ahora se restablecerá el autofiltro, en el mismo rango que antes de que comenzara su código, pero con el autofiltro actualizado para cambios en los datos.
fuente
fuente