Saltar al contenido
View in the app

A better way to browse. Learn more.

Ayuda Excel

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Array para filtrar valores en una tabla dinámica

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

Featured Replies

publicado
  • Autor

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
  • Autor

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
  • Autor

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.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.