Filtro tabla dinamica por dos datos

7 envíos / 0 nuevos
Último envío
crengifo
Imagen de crengifo
Offline
última acción: Hace 5 años 5 meses
alta: 14/02/2017 - 01:19
Puntos: 80
Filtro tabla dinamica por dos datos

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

AdjuntoTamaño
File libro2.xlsm7.34 MB
pacomegia
Imagen de pacomegia
Offline
última acción: Hace 11 horas 28 mins
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntosadministrador
alta: 27/12/2006 - 23:26
Puntos: 11175
según entiendo, si escriben

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.

crengifo
Imagen de crengifo
Offline
última acción: Hace 5 años 5 meses
alta: 14/02/2017 - 01:19
Puntos: 80
Excelente, otra inquietud que

Excelente, otra inquietud que debo hacer para que filtre varias tablas dinamicas que tengo por el mismo concepto "Molino".

De antemano muchas gracias

pacomegia
Imagen de pacomegia
Offline
última acción: Hace 11 horas 28 mins
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntosadministrador
alta: 27/12/2006 - 23:26
Puntos: 11175
Repite los pasos para cada

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.

Cron
Imagen de Cron
Offline
última acción: Hace 8 meses 2 días
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntos
alta: 23/06/2010 - 12:30
Puntos: 12735
Y digo yo... En vez de

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

crengifo
Imagen de crengifo
Offline
última acción: Hace 5 años 5 meses
alta: 14/02/2017 - 01:19
Puntos: 80
Ok muchas gracias 

Ok muchas gracias 

Josue Alba (no verificado)
Imagen de Josue Alba
Busqueda con Like

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