Saltar al contenido

Array para filtrar valores en una tabla dinámica


Recommended Posts

publicado

Hola muchachos, quería solicitarles una ayuda con lo siguiente:

Tengo que filtrar 50 tablas dinámicas desde un listado, estas tablas se filtran por "Zona"

(Lo primero que hice fue copiar 50 veces el código y cambiar el valor manualmente, pero ya siendo esta la 3era vez que debo cambiar valores, consideré que un array es mucho mejor).

Sub arreglo()

Dim miArra(0 To , 0 To 3) As String

miArra(0, 0) = "Las condes"
miArra(0, 1) = "San Bernardo"
miArra(0, 2) = "Talagante"

For Cont = 0 To 3

' División de Tablas Dinamicas

Sheets("Hoja1").Select
Range("Tabla1[#All]").Select
'Sheets.Add

ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
"Tabla1", Version:=xlPivotTableVersion14).CreatePivotTable TableDestination _
:="", TableName:="Tabla dinámica1", DefaultVersion:= _
xlPivotTableVersion14


With ActiveSheet.PivotTables("Tabla dinámica1").PivotFields("Rut")
.Orientation = xlRowField
.Position = 1
End With
With ActiveSheet.PivotTables("Tabla dinámica1").PivotFields("Nombre")
.Orientation = xlRowField
.Position = 2
End With
With ActiveSheet.PivotTables("Tabla dinámica1").PivotFields("Especialidad")
.Orientation = xlRowField
.Position = 3
End With
With ActiveSheet.PivotTables("Tabla dinámica1").PivotFields("Días de corridos")
.Orientation = xlRowField
.Position = 4
End With
ActiveSheet.PivotTables("Tabla dinámica1").AddDataField ActiveSheet.PivotTables _
("Tabla dinámica1").PivotFields("Días de corridos"), _
"Cuenta de Días de corridos", xlCount

With ActiveSheet.PivotTables("Tabla dinámica1").PivotFields( _
"Cuenta de Días de corridos")
.Caption = "Suma de Días de corridos"
.Function = xlSum
End With
ActiveSheet.PivotTables("Tabla dinámica1").AddDataField ActiveSheet.PivotTables _
("Tabla dinámica1").PivotFields("Rut"), "Cuenta de Rut", xlCount
With ActiveSheet.PivotTables("Tabla dinámica1").PivotFields("Zona")
.Orientation = xlPageField
.Position = 1
End With

ActiveSheet.PivotTables("Tabla dinámica1").PivotFields("Zona").ClearAllFilters
ActiveSheet.PivotTables("Tabla dinámica1").PivotFields("Zona").CurrentPage = _
"miArra(Cont, 0)"& ' <-ZONAL *************************************************************

Range("B4").Select
ActiveSheet.PivotTables("Tabla dinámica1").PivotFields("Nombre").AutoSort _
xlDescending, "Suma de Días de corridos", ActiveSheet.PivotTables( _
"Tabla dinámica1").PivotColumnAxis.PivotLines(1), 1

Range("D1").Select

'Cambio nombre Hoja
ActiveSheet.Select
ActiveSheet.Name = "Las condes" ' <- ZONAL **********************************************

'*******************************************************************
Next

End Sub[/CODE]

Donde está el comentario '<-ZONAL son los datos que deben reemplazarse por los del arreglo. Pero así tan como esta no resulta.

¿Alguna ayudita?

Espero sus comentarios, y gracias desde ya.

Saludos

publicado

imagino que para llamar las variables del arreglo, necesito hacerlo así:

ActiveSheet.PivotTables("Tabla dinámica1").PivotFields("Zona").CurrentPage = _
"& miArra(0, cont)" ' <-ZONAL *****************************[/CODE]

PERO NO LEE LAS ZONAS!!!!

Estoy a punto de tirar el computador por la ventana :(

publicado

si hago esto:

Sub arreglo()

Dim miArra(0 To 0, 0 To 3) As String

miArra(0, 0) = "Las condes"
miArra(0, 1) = "San Bernardo"
miArra(0, 2) = "Talagante"

For cont = 0 To 3

MsgBox "la cosa es " & miArra(0, cont)

Next

End Sub[/CODE]

funciona bien, pero no resulta para usarlo de filtro en la tabla dinámica :(

publicado

Aprendí solito

ActiveSheet.PivotTables("Tabla dinámica1").PivotFields("Zona").CurrentPage = miArra(0, cont)[/CODE]

era sin comillas, sin el & sólo la declaración del ARRAY.

SOLUCIONADO!!

:D

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.