¿Cómo asignar el valor de una celda (generada por fórmula o valor ingresado manualmente) al filtro de una tabla dinámica?

Soy Marco

Tengo un excel en la cual necesito que automáticamente, ya sea con fórmulas o con macros pueda copiarse el valor de una celda al valor del filtro de una tabla dinámica.

El valor de la celda a copiar es el resultado de una fórmula.

Por favor les pido su ayuda de forma clara y paso a paso en lo posible ya que no soy un especialista.

Saludos desde Lima - Perú

Respuesta
1

Puedes escribir los siguientes datos:

- ¿En cuál celda está la fórmula?

- ¿Cómo se llama la tabla dinámica?

- ¿Cómo se llame el campo a filtrar?

- ¿La celda y la tabla dinámica están en la misma hoja? ¿Cómo se llama la hoja?

Sigue las Instrucciones para un botón y ejecutar la macro

  1. Abre tu libro de Excel
  2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
  3. En el menú elige Insertar / Módulo
  4. En el panel del lado derecho copia la macro
  5. Ahora para crear un botón, puedes hacer lo siguiente:
  6. Inserta una imagen en tu libro, elige del menú Insertar / Imagen / Autoformas
  7. Elige una imagen y con el Mouse, dentro de tu hoja, presiona click y arrastra el Mouse para hacer grande la imagen.
  8. Una vez que insertaste la imagen en tu hoja, dale click derecho dentro de la imagen y selecciona: Tamaño y Propiedades. En la ventana que se abre selecciona la pestaña: Propiedades. Desmarca la opción “Imprimir Objeto”. Presiona “Cerrar”
  9. Vuelve a presionar click derecho dentro de la imagen y ahora selecciona: Asignar macro. Selecciona: pinta
  10. Aceptar.
  11. Para ejecutarla dale click a la imagen.

En la macro cambia: "Tabla dinámica1", "Codigo" y "F8" por tus datos.

Sub Filtro()
  Dim pt As PivotTable, pf As PivotField, pItem As PivotItem
  Dim n As Long
  '
  Application.ScreenUpdating = False
  Set pt = ActiveSheet.PivotTables("Tabla dinámica1")
  Set pf = pt.PivotFields("Codigo")
  '
  pt.ClearAllFilters
  For Each pItem In pf.PivotItems
    If pItem <> Range("F8") Then
      n = n + 1
      If n < pf.PivotItems.Count Then
        pf.PivotItems(pItem.Value).Visible = False
      Else
        MsgBox "El código no existe"
        pf.ClearAllFilters
      End If
    End If
  Next
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas