Note: The other languages of the website are Google-translated. Back to English

¿Cómo vincular el filtro de tabla dinámica a una celda determinada en Excel?

Si desea vincular un filtro de tabla dinámica a una celda determinada y hacer que la tabla dinámica se filtre según el valor de la celda, el método de este artículo puede ayudarlo.

Vincular el filtro de tabla dinámica a una celda determinada con código VBA


Vincular el filtro de tabla dinámica a una celda determinada con código VBA

La tabla dinámica que vinculará su función de filtro a un valor de celda debe incluir un campo de filtro (el nombre del campo de filtro tiene un papel importante en el siguiente código VBA).

Tome la siguiente tabla dinámica como ejemplo, el campo de filtro en la tabla dinámica se llama Categoría, e incluye dos valores "Gastos y Ventas”. Después de vincular el filtro de tabla dinámica a una celda, los valores de celda que aplicará al filtro de tabla dinámica deben ser "Gastos" y "Ventas".

1. Seleccione la celda (aquí selecciono la celda H6) que vinculará a la función de filtro de la tabla dinámica e ingrese uno de los valores de filtro en la celda de antemano.

2. Abra la hoja de trabajo que contiene la tabla dinámica que vinculará a la celda. Haga clic derecho en la pestaña de la hoja y seleccione Ver código desde el menú contextual. Ver captura de pantalla:

3. En el Microsoft Visual Basic para aplicaciones ventana, copie debajo del código VBA en la ventana Código.

Código de VBA: enlace el filtro de tabla dinámica a una celda determinada

Private Sub Worksheet_Change(ByVal Target As Range)
'Update by Extendoffice 20180702
    Dim xPTable As PivotTable
    Dim xPFile As PivotField
    Dim xStr As String
    On Error Resume Next
    If Intersect(Target, Range("H6")) Is Nothing Then Exit Sub
    Application.ScreenUpdating = False
    Set xPTable = Worksheets("Sheet1").PivotTables("PivotTable2")
    Set xPFile = xPTable.PivotFields("Category")
    xStr = Target.Text
    xPFile.ClearAllFilters
    xPFile.CurrentPage = xStr
    Application.ScreenUpdating = True
End Sub

Notas:

1) "Sheet1”Es el nombre de la hoja de trabajo abierta.
2) "PivotTable2”Es el nombre de la tabla dinámica; vinculará su función de filtro a una celda.
3) El campo de filtrado de la tabla dinámica se llama "Categoría".
4) La celda referenciada es H6. Puede cambiar estos valores variables según sus necesidades.

4. presione el otro + Q llaves para cerrar el Microsoft Visual Basic para aplicaciones ventana.

Ahora, la función de filtro de la tabla dinámica está vinculada a la celda H6.

Actualice la celda H6, luego los datos correspondientes en la tabla dinámica se filtran en función del valor existente. Ver captura de pantalla:

Al cambiar el valor de la celda, los datos filtrados en la tabla dinámica se cambiarán automáticamente. Ver captura de pantalla:


Seleccione fácilmente filas enteras según el valor de la celda en una columna certian:

Programas de Seleccionar celdas específicas utilidad de Kutools for Excel puede ayudarlo a seleccionar rápidamente filas enteras en función del valor de la celda en una columna certian en Excel, como se muestra a continuación. Después de seleccionar todas las filas según el valor de la celda, puede moverlas manualmente o copiarlas a una nueva ubicación según lo necesite en Excel.
¡Descárgalo y pruébalo ahora! (30-día de ruta libre)


Artículos relacionados:


Las mejores herramientas de productividad de oficina

Kutools para Excel resuelve la mayoría de sus problemas y aumenta su productividad en un 80%

  • Reutilizar: Inserte rápidamente fórmulas complejas, gráficos y cualquier cosa que hayas usado antes; Cifrar celdas con contraseña; Crear lista de distribución y enviar correos electrónicos ...
  • Barra de súper fórmula (edite fácilmente varias líneas de texto y fórmulas); Diseño de lectura (leer y editar fácilmente un gran número de celdas); Pegar en rango filtrado...
  • Combinar celdas / filas / columnas sin perder datos; Contenido de celdas divididas; Combinar filas / columnas duplicadas... Prevenir celdas duplicadas; Comparar rangos...
  • Seleccione Duplicado o Único Filas; Seleccionar filas en blanco (todas las celdas están vacías); Super Find y Fuzzy Find en muchos libros de trabajo; Selección aleatoria ...
  • Copia exacta Varias celdas sin cambiar la referencia de la fórmula; Crear referencias automáticamente a varias hojas; Insertar viñetas, Casillas de verificación y más ...
  • Extraer texto, Agregar texto, Eliminar por posición, Quitar espacio; Crear e imprimir subtotales de paginación; Convertir entre contenido de celdas y comentarios...
  • Súper filtro (guardar y aplicar esquemas de filtros a otras hojas); Orden avanzado por mes / semana / día, frecuencia y más; Filtro especial en negrita, cursiva ...
  • Combinar libros y hojas de trabajo; Combinar tablas basadas en columnas clave; Dividir datos en varias hojas; Conversión por lotes de xls, xlsx y PDF...
  • Más de 300 potentes funciones. Compatible con Office/Excel 2007-2021 y 365. Compatible con todos los idiomas. Fácil implementación en su empresa u organización. Funciones completas Prueba gratuita de 30 días. Garantía de devolución de dinero de 60 días.
pestaña kte 201905

Office Tab lleva la interfaz con pestañas a Office y hace que su trabajo sea mucho más fácil

  • Habilite la edición y lectura con pestañas en Word, Excel, PowerPoint, Publisher, Access, Visio y Project.
  • Abra y cree varios documentos en nuevas pestañas de la misma ventana, en lugar de en nuevas ventanas.
  • ¡Aumenta su productividad en un 50% y reduce cientos de clics del mouse todos los días!
officetab parte inferior
Comentarios (36)
Aún no hay calificaciones. ¡Sé el primero en calificar!
Este comentario fue minimizado por el moderador en el sitio
cómo hacerlo en múltiples campos ya que en el código solo hay un objetivo
Este comentario fue minimizado por el moderador en el sitio
Hola Frank
Lo siento, no puedo ayudarte con eso.
Este comentario fue minimizado por el moderador en el sitio
¿Qué pasa si la celda que está vinculada a la tabla dinámica, en este caso H6, está en otra hoja de trabajo? ¿Cómo cambia el código?
Este comentario fue minimizado por el moderador en el sitio
¿Qué pasa si tengo más de 1 tabla dinámica y para vincular a 1 celda? ¿Cómo debo modificar el código?
Este comentario fue minimizado por el moderador en el sitio
Hola Jeri,
Lo siento, no puedo ayudarte con eso. Bienvenido a publicar cualquier pregunta en nuestro foro: https://www.extendoffice.com/forum.html para obtener más soporte de Excel de nuestro profesional de Excel u otros fanáticos de Excel.
Este comentario fue minimizado por el moderador en el sitio
encuéntrelos y cámbielos en Array(), Intersect(), Worksheets(), PivotFields()

PivotTable1
PivotTable2
PivotTable3
PivotTable4
H1
NombreHoja
Nombre del campo




Private Sub Worksheet_Change(ByVal Target As Range)
'Update by Extendoffice 20180702
    Dim xPTable As PivotTable
    Dim xPFile As PivotField
    Dim xPTabled As PivotTable
    Dim xPFiled As PivotField
    Dim xStr As String
    On Error Resume Next
    '리스트 만들기
    Dim listArray() As Variant
    listArray = Array("PivotTable1", "PivotTable2", "PivotTable3", "PivotTable4")
    If Intersect(Target, Range("H1")) Is Nothing Then Exit Sub
    Application.ScreenUpdating = False
    For i = 0 To UBound(listArray)
        Set xPTable = Worksheets("SheetName").PivotTables(listArray(i))
        Set xPFile = xPTable.PivotFields("FieldName")
        'MsgBox (listArray(i))
        xStr = Target.Text
        xPFile.ClearAllFilters
        xPFile.CurrentPage = xStr
    Next
        Application.ScreenUpdating = True
End Sub
Este comentario fue minimizado por el moderador en el sitio
Boa tarde...! Ótima publicación, como faço para utilizar o filtrar em duas ou mais tabelas dinâmicas...? Agradeço desde já.

Buena tarde...! Gran publicación, ¿cómo uso el filtro en dos o más tablas dinámicas...? Gracias por adelantado.
Este comentario fue minimizado por el moderador en el sitio
Hola Gilmar Alves,
Lo siento, no puedo ayudarte con eso. Bienvenido a publicar cualquier pregunta en nuestro foro: https://www.extendoffice.com/forum.html para obtener más soporte de Excel de nuestro profesional de Excel u otros fanáticos de Excel.
Este comentario fue minimizado por el moderador en el sitio
¿Alguien ha descubierto la pregunta de vinculación de tablas dinámicas múltiples?
Este comentario fue minimizado por el moderador en el sitio
Cambiar valores en Array(), Worksheets() e Intersect()



**Encuéntrelos y cámbielos**
NombreHoja
E1
PivotTable1
PivotTable2
PivotTable3




Sub hoja de trabajo privada_Cambio (según el rango de destino ByVal)
'Actualizar por Extendoffice 20180702
Dim xPTable como tabla dinámica
Dim xPFile como PivotField

Dim xPTabled como tabla dinámica
Dim xPFiled como PivotField

Dim xStr como cadena



On Error Resume Next

'리스트 만들기
Dim listArray() como variante
listArray = Array("PivotTable1", "PivotTable2", "PivotTable3")



Si Intersect(Target, Range("E1")) no es nada, salga de Sub
Application.ScreenUpdating = False

Para i = 0 Para UBound(listArray)

Establecer xPTable = Worksheets("SheetName").PivotTables(listArray(i))
Establecer xPFile = xPTable.PivotFields("Company_ID")

xStr = Destino.Texto
xPFile.ClearAllFilters
xPFile.PáginaActual = xStr



Siguiente

Application.ScreenUpdating = True



End Sub
Este comentario fue minimizado por el moderador en el sitio
Ciao, sto provando a fare lo stesso esempio per far in modo che il filtro della pivot si setti sul valore della cella,
non riesco a farla funzionare.

Quale passaggio manca nella descrizione sopra?
Este comentario fue minimizado por el moderador en el sitio
Hola,
¿Recibió algún mensaje de error? Necesito información más específica sobre su problema, como su versión de Excel. Y si no le importa, intente crear sus datos en un nuevo libro de trabajo y vuelva a intentarlo, o tome una captura de pantalla de sus datos y cárguela aquí.
Este comentario fue minimizado por el moderador en el sitio
Hola,

Intenté que esto funcionara para el filtro de columna, pero parece que no funciona. ¿Necesito otro código para eso?

Muchas Gracias
Este comentario fue minimizado por el moderador en el sitio
Hola Justin,
¿Recibió algún mensaje de error? Necesito saber más específico sobre su problema.
Antes de aplicar el código, no olvides modificar el "nombre de la hoja""nombre de la tabla dinámica""nombre del filtro de la tabla dinámica" y el célula desea filtrar la tabla dinámica en función de (ver captura de pantalla).
https://www.extendoffice.com/images/stories/comments/comment-picture-zxm/4.png
Este comentario fue minimizado por el moderador en el sitio
Hola Crystal,

Gracias por tu ayuda. El problema es que la función no está haciendo nada por alguna razón. Algunas aclaraciones:

Nombre de pivote: Order_Comp_B2C
Nombre de la hoja: hoja de cálculo
Nombre del filtro: Número de semana (Cambié este nombre de lo que era "Número de semana de envío" en el archivo de datos)
Celda a cambiar: O26 y O27 (esto debería estar dentro del rango)

En este pivote, estoy tratando de cambiar el filtro para las columnas, no tengo nada en el área de filtro en el menú Campos de la tabla dinámica.

mi codigo es:

Sub hoja de trabajo privada_Cambio (según el rango de destino ByVal)
'Actualizar por Extendoffice 20180702
Dim xPTable como tabla dinámica
Dim xPFile como PivotField
Dim xStr como cadena
On Error Resume Next
Si Intersect(Target, Range("O26")) no es nada, entonces salga de Sub
Application.ScreenUpdating = False
Establecer xPTable = Worksheets("Calculation Sheet").PivotTables("Order_Comp_B2C")
Establecer xPFile = xPTable.PivotFields("Número de semana")
xStr = Destino.Texto
xPFile.ClearAllFilters
xPFile.PáginaActual = xStr
Application.ScreenUpdating = True
End Sub

Gracias,

Justin
Este comentario fue minimizado por el moderador en el sitio
Hola Justin Teew,
He cambiado el Nombre de pivote, nombre de la hoja, nombre del filtro y celda para cambiar a las condiciones que mencionó anteriormente, y probé el código VBA que proporcionó, funciona bien en mi caso. Consulte el siguiente GIF o el libro de trabajo adjunto.
¿Le importaría crear un nuevo libro de trabajo y volver a intentar el código?
https://www.extendoffice.com/images/stories/comments/comment-picture-zxm/6.gif
Este comentario fue minimizado por el moderador en el sitio
Hola Crystal,

Adjunto una captura de pantalla del pivote, el cuadro rojo es el filtro que me gustaría cambiar según el valor de la celda.

Preferiblemente, me gustaría usar un rango de celdas que indique varios números de semana.

Gracias,

Justin
Este comentario fue minimizado por el moderador en el sitio
Hola Justin,
Lo siento, no vi la captura de pantalla que adjuntaste en la página. Tal vez haya algún error en la página.
Si aún necesita resolver el problema, envíeme un correo electrónico a través de zxm@addin99.com. Lo siento por los inconvenientes ocasionados.
Este comentario fue minimizado por el moderador en el sitio
Hola, Justin Teew.
Intente con el siguiente código VBA. Espero poder ayudar.

Private Sub Worksheet_Change(ByVal Target As Range)
    'Update by Extendoffice 20220706
    Dim I As Integer
    Dim xFilterStr1, xFilterStr2 As String
    On Error Resume Next
    If Intersect(Target, Range("O26:O27")) Is Nothing Then Exit Sub
    'Application.ScreenUpdating = False
    
    xFilterStr1 = Range("O26").Value
    xFilterStr2 = Range("O27").Value
    ActiveSheet.PivotTables("Order_Comp_B2C").PivotFields("Week Number"). _
        ClearAllFilters
    If xFilterStr1 = "" And xFilterStr2 = "" Then Exit Sub
    ActiveSheet.PivotTables("Order_Comp_B2C").PivotFields("Week Number"). _
        EnableMultiplePageItems = True
    xCount = ActiveSheet.PivotTables("Order_Comp_B2C").PivotFields("Week Number").PivotItems.Count

    For I = 1 To xCount
        If I <> xFilterStr1 And I <> xFilterStr2 Then
            ActiveSheet.PivotTables("Order_Comp_B2C").PivotFields("Week Number").PivotItems(I).Visible = False
        Else
            ActiveSheet.PivotTables("Order_Comp_B2C").PivotFields("Week Number").PivotItems(I).Visible = True
        End If
    Next

    'Application.ScreenUpdating = True
End Sub
Este comentario fue minimizado por el moderador en el sitio
Lo usé para un excell normal y funcionó. Pero no pude usarlo para hojas de trabajo olap. tal vez tengo que cambiarlo un poco?
Este comentario fue minimizado por el moderador en el sitio
Hola maziaritib4 TIB,
El método solo está disponible para Microsoft Excel. Lo siento por los inconvenientes ocasionados.
Este comentario fue minimizado por el moderador en el sitio
Hola Justin,

Esto funcionó perfectamente, sin embargo, me pregunto si esta regla se puede aplicar a varias tablas dinámicas dentro de la misma hoja.

Gracias,
James
Este comentario fue minimizado por el moderador en el sitio
Hola James,

Sí, esto es posible, el código que usé para esto es (4 pivotes y 2 referencias de celda):

Sub hoja de trabajo privada_Cambio (según el rango de destino ByVal)
Dim I como entero
Dim xFilterStr1, xFilterStr2, yFilterstr1, yfilterstr2 como cadena
On Error Resume Next
Si Intersect(Target, Range("O26:P27")) no es nada, entonces salga de Sub

xFilterStr1 = Rango("O26").Valor
xFilterStr2 = Rango("O27").Valor
yFilterstr1 = Rango("p26").Valor
yfilterstr2 = Rango("p27").Valor
ActiveSheet.PivotTables("Order_Comp_B2C_Crea").PivotFields("Número de semana"). _
ActiveSheet.PivotTables("Order_Comp_B2B_Crea").PivotFields("Número de semana"). _
ActiveSheet.PivotTables("Order_Comp_B2C_Disp").PivotFields("Número de semana"). _
ActiveSheet.PivotTables("Order_Comp_B2B_Disp").PivotFields("Número de semana"). _
BorrarTodosLosFiltros

Si xFilterStr1 = "" y xFilterStr2 = "" y yFilterstr1 = "" y yfilterstr2 = "" entonces salga de Sub
ActiveSheet.PivotTables("Order_Comp_B2C_Crea").PivotFields("Número de semana"). _
ActiveSheet.PivotTables("Order_Comp_B2B_Crea").PivotFields("Número de semana"). _
ActiveSheet.PivotTables("Order_Comp_B2C_Disp").PivotFields("Número de semana"). _
ActiveSheet.PivotTables("Order_Comp_B2B_Disp").PivotFields("Número de semana"). _
EnableMultiplePageItems = Verdadero

xCount = ActiveSheet.PivotTables("Order_Comp_B2C_Crea").PivotFields("Número de semana").PivotItems.Count
xCount = ActiveSheet.PivotTables("Order_Comp_B2B_Crea").PivotFields("Número de semana").PivotItems.Count
yCount = ActiveSheet.PivotTables("Order_Comp_B2C_Disp").PivotFields("Número de semana").PivotItems.Count
yCount = ActiveSheet.PivotTables("Order_Comp_B2B_Disp").PivotFields("Número de semana").PivotItems.Count

Para I = 1 Para xCuenta
Si yo <> xFilterStr1 y yo <> xFilterStr2 Entonces
ActiveSheet.PivotTables("Order_Comp_B2C_Crea").PivotFields("Número de semana").PivotItems(I).Visible = False
ActiveSheet.PivotTables("Order_Comp_B2B_Crea").PivotFields("Número de semana").PivotItems(I).Visible = False
otro
ActiveSheet.PivotTables("Order_Comp_B2C_Crea").PivotFields("Número de semana").PivotItems(I).Visible = True
ActiveSheet.PivotTables("Order_Comp_B2B_Crea").PivotFields("Número de semana").PivotItems(I).Visible = True
Si terminar
Siguiente

Para I = 1 Para yCuenta
Si yo <> yFilterstr1 y yo <> yfilterstr2 Entonces
ActiveSheet.PivotTables("Order_Comp_B2C_Disp").PivotFields("Número de semana").PivotItems(I).Visible = False
ActiveSheet.PivotTables("Order_Comp_B2B_Disp").PivotFields("Número de semana").PivotItems(I).Visible = False
otro
ActiveSheet.PivotTables("Order_Comp_B2C_Disp").PivotFields("Número de semana").PivotItems(I).Visible = True
ActiveSheet.PivotTables("Order_Comp_B2B_Disp").PivotFields("Número de semana").PivotItems(I).Visible = True
Si terminar
Siguiente

End Sub
Este comentario fue minimizado por el moderador en el sitio
Cambiar valores en Array(), Worksheets() e Intersect()



**Encuéntrelos y cámbielos**
NombreHoja
E1
PivotTable1
PivotTable2
PivotTable3




Sub hoja de trabajo privada_Cambio (según el rango de destino ByVal)
'Actualizar por Extendoffice 20180702
Dim xPTable como tabla dinámica
Dim xPFile como PivotField

Dim xPTabled como tabla dinámica
Dim xPFiled como PivotField

Dim xStr como cadena



On Error Resume Next

'리스트 만들기
Dim listArray() como variante
listArray = Array("PivotTable1", "PivotTable2", "PivotTable3")



Si Intersect(Target, Range("E1")) no es nada, salga de Sub
Application.ScreenUpdating = False

Para i = 0 Para UBound(listArray)

Establecer xPTable = Worksheets("SheetName").PivotTables(listArray(i))
Establecer xPFile = xPTable.PivotFields("Company_ID")

xStr = Destino.Texto
xPFile.ClearAllFilters
xPFile.PáginaActual = xStr



Siguiente

Application.ScreenUpdating = True



End Sub
Este comentario fue minimizado por el moderador en el sitio
Hola,

El código funciona bien para mí. Sin embargo, no puedo hacer que la tabla dinámica actualice el objetivo del filtro automáticamente. El objetivo en mi caso es una fórmula [FECHA (D18, S14, C18)]. El código solo funciona cuando hago doble clic en la celda de destino y presiono Intro.

Gracias
Este comentario fue minimizado por el moderador en el sitio
Hola,

Este código funciona perfectamente. Sin embargo, no puedo obtener el código para actualizar la tabla dinámica automáticamente. El valor objetivo para mí es una fórmula (= FECHA (D18, .., ..)) que cambia según lo que se seleccione en D18. Para que actualice la tabla dinámica, tengo que hacer doble clic en la celda de destino y presionar enter. ¿Hay alguna forma de evitarlo?

Gracias
Este comentario fue minimizado por el moderador en el sitio
Hola ST,
Suponga que su valor objetivo está en H6 y cambia según el valor en D18. Para filtrar una tabla dinámica en función de este valor objetivo. El siguiente código de VBA puede ayudar. Por favor inténtalo.
Private Sub Worksheet_Change(ByVal Target As Range)
'Updated by Extendoffice 2022/07/22
Dim xPTable As PivotTable
Dim xPFile As PivotField
Dim xStr As String
Dim xBoolean As Boolean
Dim xItsRG As Range
Dim xDDs As Range
Dim xDs As Range
On Error Resume Next

xBoolean = False
Set xRg = Range("h6")

Set xItsRG = Intersect(Target, xRg)
Set xDDs = Intersect(Target.DirectDependents, xRg)
Set xDs = Intersect(Target.Dependents, xRg)
If Not (xItsRG Is Nothing) Then
    xBoolean = True
ElseIf Not (xDDs Is Nothing) Then
    xBoolean = True
ElseIf Not (xDs Is Nothing) Then
    xBoolean = True
End If


If Not xBoolean Then Exit Sub

Application.ScreenUpdating = False
Set xPTable = Worksheets("Sheet1").PivotTables("Pivot Table 1")
Set xPFile = xPTable.PivotFields("Category")
xStr = Target.Text
xPFile.ClearAllFilters
xPFile.CurrentPage = xStr
Application.ScreenUpdating = True

End Sub
Este comentario fue minimizado por el moderador en el sitio
Hola Crysal,

Agregué una línea en el código: Dim xRg As Range

El código no restablece automáticamente las fechas cuando se cambia el objetivo. Tengo un archivo de Excel que replica lo que estoy tratando de hacer, aunque no puedo agregar archivos adjuntos en este sitio web. D3 (objetivo = FECHA (A15, B15, C15)) tiene una ecuación vinculada a A15, B15 y C15. Cuando se cambia cualquier valor en A15, B15 y C15, la tabla dinámica se restablece sin filtro. ¿Podrías ayudarme con esto?
Este comentario fue minimizado por el moderador en el sitio
Hola ST,
No entiendo muy bien lo que quieres decir. En su caso, el valor de la celda objetivo D3 se usa para filtrar la tabla dinámica. La fórmula en la celda objetivo D3 hace referencia a los valores de las celdas A15, B15 y C15, que cambiarán según los valores en las celdas de referencia. Cuando se cambia cualquier valor en A15, B15 y C15, la tabla dinámica se filtrará automáticamente si el valor en la celda objetivo cumple con las condiciones de filtro de la tabla dinámica. Si el valor en la celda de destino no cumple con los criterios de filtrado de la tabla dinámica, la tabla dinámica se restablecerá automáticamente sin filtrado.
Este comentario fue minimizado por el moderador en el sitio
No estoy seguro de si hay una manera de compartir un archivo de Excel con usted. Si mi valor objetivo, que es una fecha, cambia según los cambios en otras celdas. Tengo que hacer doble clic en la celda de destino y presionar Intro (como lo haría después de ingresar una fórmula en una celda) para actualizar la tabla dinámica
Este comentario fue minimizado por el moderador en el sitio
Hola Sagar T,
El código ha sido actualizado. Por favor inténtalo. Gracias por tus comentarios.
No olvide cambiar los nombres de la hoja de trabajo, la tabla dinámica y el filtro en el código. O puede descargar el siguiente libro de trabajo cargado para realizar pruebas.

Private Sub Worksheet_Change(ByVal Target As Range)
'Updated by Extendoffice 20220805
Dim xPTable As PivotTable
Dim xPFile As PivotField
Dim xStr As String
Dim xBoolean As Boolean
Dim xItsRG As Range
Dim xDDs As Range
Dim xDs As Range
On Error Resume Next

xBoolean = False
Set xRg = Range("D3")

Set xItsRG = Intersect(Target, xRg)
Set xDDs = Intersect(Target.DirectDependents, xRg)
Set xDs = Intersect(Target.Dependents, xRg)
If Not (xItsRG Is Nothing) Then
    xBoolean = True
ElseIf Not (xDDs Is Nothing) Then
    xBoolean = True
ElseIf Not (xDs Is Nothing) Then
    xBoolean = True
End If


If Not xBoolean Then Exit Sub
xStr = Format(xRg.Text, "m/d/yyyy")
Application.ScreenUpdating = False
Set xPTable = Worksheets("Sheet2").PivotTables("PivotTable1")
Set xPFile = xPTable.PivotFields("Date")
xPFile.ClearAllFilters
xPFile.CurrentPage = xStr
Application.ScreenUpdating = True

End Sub
Este comentario fue minimizado por el moderador en el sitio
encuéntrelos y cámbielos en Array(), Intersect(), Worksheets(), PivotFields()

PivotTable1
PivotTable2
PivotTable3
PivotTable4
H1
NombreHoja
Nombre del campo




Private Sub Worksheet_Change(ByVal Target As Range)
'Update by Extendoffice 20180702
    Dim xPTable As PivotTable
    Dim xPFile As PivotField
    Dim xPTabled As PivotTable
    Dim xPFiled As PivotField
    Dim xStr As String
    On Error Resume Next
    '리스트 만들기
    Dim listArray() As Variant
    listArray = Array("PivotTable1", "PivotTable2", "PivotTable3", "PivotTable4")
    If Intersect(Target, Range("H1")) Is Nothing Then Exit Sub
    Application.ScreenUpdating = False
    For i = 0 To UBound(listArray)
        Set xPTable = Worksheets("SheetName").PivotTables(listArray(i))
        Set xPFile = xPTable.PivotFields("FieldName")
        'MsgBox (listArray(i))
        xStr = Target.Text
        xPFile.ClearAllFilters
        xPFile.CurrentPage = xStr
    Next
        Application.ScreenUpdating = True
End Sub
Este comentario fue minimizado por el moderador en el sitio
Как сделать чтобы сводная таблица применяла сразу 2 фильтра из 2хразных ячеек? а не 1 как в примере?
Este comentario fue minimizado por el moderador en el sitio
Hola Алексей,

Verifique si el código VBA en este comentario #38754 va a ayudar.
Este comentario fue minimizado por el moderador en el sitio
Можно ли сослаться вместо ячейки H6 на ячейку на другом листе? как это сделать? подскажите пожалуйста.
Este comentario fue minimizado por el moderador en el sitio
Hola Алексей,

No necesita modificar el código, solo agregue el código VBA a la hoja de trabajo de la celda a la que desea hacer referencia.
Por ejemplo, si desea filtrar una tabla dinámica denominada "PivotTable1"En Sheet2 basado en el valor de la celda H6 in Sheet3, haga clic con el botón derecho en Sheet3 ficha de la hoja de trabajo, haga clic en Ver código en el menú contextual y, a continuación, agregue el código a la Hoja3 (Código) ventana.
No hay comentarios publicados aquí todavía
Deje sus comentarios
Publicar como invitado
×
Califica esta publicación:
0   Personajes
Ubicaciones sugeridas

Siganos

Copyright © 2009 - www.extendoffice.com. | Reservados todos los derechos. Energizado por ExtendOffice, | Mapa del Sitio
Microsoft y el logotipo de Office son marcas comerciales o marcas comerciales registradas de Microsoft Corporation en los Estados Unidos y / o en otros países.
Protegido por Sectigo SSL