Cuando tienes varias tablas dinmicas y necesitas aplicar un filtro a todas ellas al mismo tiempo en base al valor de una celda te das cuenta que no existe una manera fcil de hacerlo en Excel. Hoy analizaremos una alternativa para filtrar una tabla dinmica segn el valor de una celda. Antes de continuar, debo aclarar que los filtros de informe son la opcin ms sencilla para filtrar una tabla dinmica ya que podemos elegir los datos que deseamos visualizar. Sin embargo, hay ocasiones en las que una frmula de Excel inserta un valor en una celda por el cual queremos filtrar una tabla dinmica o simplemente porque el usuario desea ingresar el texto manualmente. Cualquiera que sea el caso, ser necesario utilizar cdigo VBA para filtrar la tabla dinmica en base al valor de dicha celda. Como primer ejemplo utilizaremos una tabla dinmica que muestra la lista de estados con sus respectivos montos de ventas de los ltimos dos aos. Cada estado pertenece a una regin (Norte, Sur, Este, Oeste) que est presente como el filtro de informe de la tabla dinmica, pero no utilizaremos dicho filtro de informe sino que aplicaremos el filtro a la tabla dinmica en base al valor de la celda F1. Sigue a Excel Total Find us on Facebook Excel Total 20,316 people like Excel Total. Facebook social plugin Like Like INICIO FUNCIONES ACERCA Filtrar tabla dinmica segn valor de celda http://exceltotal.com/filtrar-tabla-dinamica-segun-valor-de-celda/?utm... 1 de 7 12/03/2014 21:44 Filtrar tabla dinmica segn valor de celda El cdigo que utilizaremos detecta cualquier cambio en la celda F1 y posteriormente se realiza la actualizacin de los datos de la tabla dinmica. La coleccin PivotTables nos permite acceder a los campos de una tabla dinmica. En nuestro ejemplo nos interesa el campo Region para el cual se limpia cualquier filtro antes de aplicar uno nuevo basado en el valor de la celda F1. El resultado de esta macro es el siguiente: Al ingresar el valor Norte en la celda F1 la macro aplicar el filtro a la tabla dinmica y puedes notar que el filtro de informe tambin cambia automticamente al valor Norte. En cuanto a los posibles errores que se pudieran presentar, nuestra macro considera aquellos casos en los que ingresamos una Region no vlida en la celda F1, o si simplemente dejamos la celda en blanco, ya que con la lnea de cdigo On Error Resume Next se captura el error y se limpia el filtro. Macro para filtrar todas las tablas dinmicas Como segundo ejemplo crear una tabla dinmica diferente en otra hoja y modificar la macro anterior para filtrar todas las tablas dinmicas del libro de acuerdo al valor de la celda F1. El cdigo de la macro es el siguiente: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("F1")) Is Nothing Then 'En base al campo Region de la Tabla dinmica1: With PivotTables("Tabla dinmica1").PivotFields("Region" 'Limpiar todos los filtros .ClearAllFilters 'Filtrar por el valor de la celda F1 On Error Resume Next .CurrentPage = Range("F1").Value End With End If End Sub 1 2 3 4 5 Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("F1")) Is Nothing Then Dim hoja As Worksheet Filtrar tabla dinmica segn valor de celda http://exceltotal.com/filtrar-tabla-dinamica-segun-valor-de-celda/?utm... 2 de 7 12/03/2014 21:44 A diferencia del primer ejemplo, en esta macro utilizamos la coleccin ThisWorkbook.Worksheets para recorrer todas las hojas del libro y de esa manera acceder a todas las tablas dinmicas. Al ingresar un valor en la celda F1 se aplicar el filtro correspondiente a la tabla dinmica de la hoja actual: Adems, si cambiamos a la hoja del primer ejemplo, notars que tambin se ha aplicado el mismo filtro a la tabla dinmica: 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 Dim td As PivotTable 'Recorrer todas las hojas del libro For Each hoja In ThisWorkbook.Worksheets 'Recorrer las tablas dinmicas de la hoja For Each td In hoja.PivotTables 'En base al campo Region de la tabla dinmica: With td.PivotFields("Region") 'Limpiar todos los filtros .ClearAllFilters 'Filtrar por el valor de la celda F1 On Error Resume Next .CurrentPage = Range("F1").Value End With Next td Next End If End Sub Filtrar tabla dinmica segn valor de celda http://exceltotal.com/filtrar-tabla-dinamica-segun-valor-de-celda/?utm... 3 de 7 12/03/2014 21:44 Observa que el filtro de informe muestra el valor Sur aunque la celda F1 est vaca, pero eso no importa porque el filtro se ha aplicado considerando la celda F1 de la otra hoja. Lo nico que es necesario para que esta macro funcione correctamente es que todas las tablas dinmicas deben incluir el campo por el cual se est filtrando, que en nuestro ejemplo es el campo Region. Las macros que hemos creado te ayudarn a filtrar una tabla dinmica por el valor de una celda e inclusive podrs aplicar dicho filtro a todas las tablas dinmicas de un libro si as lo requieres. Descarga el libro de trabajo utilizado en este artculo y contina probando los filtros. Por ltimo debo decir que, si en lugar de utilizar el valor de una celda, deseas filtrar varias tablas dinmicas con un solo filtro de informe, te recomiendo leer el artculo Cmo vincular tablas dinmicas por un filtro de informe donde encontrars otra alternativa de solucin. Publicado el 12 de marzo del 2014 por Moiss Ortz Excel Total 20,316 people like Excel Total. Facebook social plugin Like Like 10 pensamientos en Filtrar tabla dinmica segn valor de celda Marcos Filtrar tabla dinmica segn valor de celda http://exceltotal.com/filtrar-tabla-dinamica-segun-valor-de-celda/?utm... 4 de 7 12/03/2014 21:44 muchas gracias por tus enseanzas. Responder Basilio Vallejos Campos En mis servicios que estoy prestando a una institucin, es de mucha ayuda y de utilidad. Responder Mximo Hola, Moiss. Como siempre, un artculo muy til e interesante. Podras aclararme una pequea duda? En el ejemplo dices que para filtrar todas las tablas slo hay que introducir una regin en la celda F1. Pero, en qu hoja exactamente? En la que contiene la macro? Sera muy interesante que se pudiera hacer en dicha celda pero de cualquier hoja. Un saludo y gracias por tu atencin. Responder Moiss Ortz Autor Hola Mximo, el texto se introduce en la celda F1 de la hoja actual. Si descargas el libro de trabajo vers que cada ejemplo est en una hoja diferente, la hoja Ejemplo1 tiene la macro que filtra una sola tabla dinmica. La hoja Ejemplo2 tiene la macro que filtra todas las tablas dinmicas. Poro otro lado, es totalmente factible modificar el cdigo para que consulte el valor de una celda en otra hoja para entonces aplicar el filtro, solo es cuestin de obtener correctamente el valor de dicha celda, por ejemplo: ThisWorkbook.Sheets(EjemploX).Range(F1) Responder Gerardo El Excel es muy importante en la Empresa donde trabajo, las tablas dinamicas son de mucha utilidad. Responder Filtrar tabla dinmica segn valor de celda http://exceltotal.com/filtrar-tabla-dinamica-segun-valor-de-celda/?utm... 5 de 7 12/03/2014 21:44 jakson De mucha utilidad, Muchas gracias. Responder LUIS ROMERO GONZALES Que buen tema en trabajar con Filtros en Macros gracias por la informacin favor de tocar el tema de macros se agradecera mucho. Atte. Luis Romero. Responder Manuel hola, la verdad que yo creo ( no soy experto) que existe una forma mas fcil de hacerlo, y creo que lo vi en esta pagina , es con segmento de datos de tabla dinmica, en el cual puedes vincular las tablas dinmicas y crear un filtro el cual manda a todas las tablas. Responder Moiss Ortz Autor Hola Manuel, gracias por tu comentario. El mtodo que mencionas es precisamente el que menciono al final del artculo: http://exceltotal.com/como-vincular-tablas-dinamicas- por-un-filtro-de-informe/ Esa alternativa no necesariamente sustituye la descrita en este artculo ya que la segmentacin de datos no toma el valor de una celda, pero nos ayuda a filtrar varias tablas dinmicas utilizando un solo filtro de informe. Responder sergio Excelente, gracias, la verdad son muy valiosos tus apoyos, para hacer mas facil nuestra tarea diaria Responder Filtrar tabla dinmica segn valor de celda http://exceltotal.com/filtrar-tabla-dinamica-segun-valor-de-celda/?utm... 6 de 7 12/03/2014 21:44 Deja un comentario Tu direccin de correo electrnico no ser publicada. Los campos necesarios estn marcados * Nombre * Correo electrnico * Comentario Filtrar tabla dinmica segn valor de celda http://exceltotal.com/filtrar-tabla-dinamica-segun-valor-de-celda/?utm... 7 de 7 12/03/2014 21:44