Aplicar filtro a una tabla dinamica segun el valor de una celda
Publicado por Johann (1 intervención) el 05/10/2016 17:34:45
Tengo una tabla dinámica y quiero que se actualice el filtro por el valor puesto en una celda.
Ya busque codigos que hagan esto y si existen, el problema es que mi tabla viene de PowerPivot y estos codigos no funcionan
Al hacer una macro el sistema tira el siguiente codigo:
En Internet encontre este codigo que ha de funcionar si la tabla dinamica es creada con un conjunto de datos de Excel
pero Por tratarse de una tabla creada en PowerPivot este codigo me tira el siguiente mensaje de error "No se puede obtener la propiedad PivotFields de la clase PivotTable"
¿Alguien podrá ayudarme?
Ya busque codigos que hagan esto y si existen, el problema es que mi tabla viene de PowerPivot y estos codigos no funcionan
Al hacer una macro el sistema tira el siguiente codigo:
1
2
3
4
5
6
7
ActiveSheet.PivotTables("Detalle_Cuentas").PivotFields( _
"[Cuenta_Externa].[N_extendido].[N_extendido]").ClearAllFilters -(hasta aquí funciona bien)-
ActiveSheet.PivotTables("Detalle_Cuentas").PivotFields( _
"[Cuenta_Externa].[N_extendido].[N_extendido]").CurrentPage = _
"[Cuenta_Externa].[N_extendido].&[(05-002) Mano de Obra Directa]" (Esta es la parte que quiero sustituir por un valor ubicado en la celda ("AA1"))
En Internet encontre este codigo que ha de funcionar si la tabla dinamica es creada con un conjunto de datos de Excel
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("AA1")) Is Nothing Then
'En base al campo Region de la Tabla dinámica1:
With PivotTables("Detalle_Cuentas").PivotFields("N_extendido")
'Limpiar todos los filtros
.ClearAllFilters
'Filtrar por el valor de la celda F1
On Error Resume Next
.CurrentPage = Range("AA1").Value
End With
End If
End Sub
¿Alguien podrá ayudarme?
Valora esta pregunta
0