Buenos dias,
Tengo una tabla dinamica la cual quiero que se filtre por dos celdas en mi caso molino y uso, que al colocar datos en las celdas k1 y k2 haga el filtro
Adjunto reporte.
Este es el codigo parauna sola celda no se como haerla para los dos celdas.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim xPTable As PivotTable
Dim xPFile As PivotField
Dim xStr As String
On Error Resume Next
If Intersect(Target, Range("K1:K2")) Is Nothing Then Exit Sub
Application.ScreenUpdating = False
Set xPTable = Worksheets("Datos_Cem").PivotTables("Tabla dinámica1")
Set xPFile = xPTable.PivotFields("MOLINO")
xStr = Target.Text
xPFile.ClearAllFilters
xPFile.CurrentPage = xStr
Application.ScreenUpdating = True
End Sub
Atento a sus comentarios gracias
Adjunto | Tamaño |
---|---|
libro2.xlsm | 7.34 MB |
según entiendo, si escriben en la celda K1 utilizaríamos eso como filtro para MOLINO, y si escriben algo en la celda K2 utilizaríamos eso como criterio para USO
en este caso, simplemente modificaría la línea donde estableces el valor de la variable xPFile dependiendo de qué celda sea la modificada
Por ejemplo así
en vez de esto:
Set xPFile = xPTable.PivotFields("MOLINO")
puedes poner esto otro
If Target.Address = "$K$1" Then
Set xPFile = xPTable.PivotFields("MOLINO")
ElseIf Target.Address = "$K$2" Then
Set xPFile = xPTable.PivotFields("USO")
End If
El resto te vale igual
------
Ya sé Excel, pero necesito más.
Excelente, otra inquietud que debo hacer para que filtre varias tablas dinamicas que tengo por el mismo concepto "Molino".
De antemano muchas gracias
Repite los pasos para cada tabla
depende de donde estén tus tablas, de si son todas o sólo algunas, ...
Por ejemplo puedes hacer un bucle que las recorra todas las tablas dinámicas de todas las hojas del libro, podría ser algo así:
Sub todaslastablasdinamicas()
Dim mihoja As Worksheet, miTabladinamica As PivotTable
For Each mihoja In ActiveWorkbook.Worksheets
For Each miTabladinamica In mihoja.PivotTables
'aquí lo que quieras hacer con cada tabla dinámica
Next
Next
End Sub
------
Ya sé Excel, pero necesito más.
Y digo yo... En vez de reinventar la rueda, ¿por qué no utilizas las herramientas de segmentación de datos? Hacen exactamente lo que tú quieres que hagan, y funcionan (hasta donde yo sé) desde Excel 2010.
Un saludo
Ok muchas gracias
Hola Si me pudieras ayudar con esta macro quisiera que pudiera buscar con Like o con solo partes del codigo o la descripcion.
Muchas Gracias de Antemano
Private Sub Worksheet_Change(ByVal Target As Range)
Dim xPTable As PivotTable
Dim xPFile As PivotField
Dim xStr As String
On Error Resume Next
If Intersect(Target, Range("D3,E3")) Is Nothing Then Exit Sub
Application.ScreenUpdating = False
Set xPTable = Worksheets("ExistProdAlm").PivotTables("Existencias")
If Target.Address = "$D$3" Then
Set xPFile = xPTable.PivotFields("Codigo:")
ElseIf Target.Address = "$E$3" Then
Set xPFile = xPTable.PivotFields("Descripcion:")
End If
xStr = Target.Text
xPFile.ClearAllFilters
xPFile.CurrentPage = xStr
Application.ScreenUpdating = True
End Sub