Saltar al contenido

campo calculado en tabla dinámica que coge datos de los totales


Recommended Posts

publicado

Hola de nuevo, a ver si me podéis ayudar con esto. Estoy haciendo una tabla dinámica con una macro, el problema es que tengo que agregar dos campos calculados que representen el porcentaje de unos datos, y claro, para hacer el porcentaje necesito tener previamente el total, que me lo da precisamente la tabla dinámica, así que no sé cómo hacerlo, porque no sé qué fórmula puedo usar para hacer referencia al campo "totales" que me da la tabla dinámica.

Os paso un excel con los datos de origen,en "vuelos1" está la tabla dinámica que crea la macro y al lado de esa una creada a mano con lo que pretendo conseguir, lo que me falta son las dos columnas de porcentajes, llevo toda la mañana dándole vueltas y no se me ocurre cómo hacerlo.

Os copio el código de creación de la tabla dinámica, por si os hiciera falta para entender la tabla que estoy creando.

Worksheets("datos").ActivateRange("A4").Activate
ActiveCell.CurrentRegion.Select

Dim PTcache As PivotCache
Dim PT As PivotTable


Application.ScreenUpdating = False
'borrar la hoja de tabla dinámica si existe
On Error Resume Next
Application.DisplayAlerts = False
Sheets("Vuelos1").Delete
On Error GoTo 0


'crear el caché de tabla dinámica
Set PTcache = ActiveWorkbook.PivotCaches.Create( _
SourceType:=xlDatabase, _
SourceData:=Selection)

'añadir la nueva hoja
ActiveWorkbook.Sheets.Add After:=Worksheets("BBDD Administración")
ActiveSheet.Name = ("Vuelos1")
Sheets("Vuelos1").Select
ActiveWorkbook.Sheets(ActiveSheet.Name).Tab.Color = 5296274


'crear la tabla dinámica desde la caché
Set PT = ActiveSheet.PivotTables.Add(PivotCache:=PTcache, TableDestination:=Range("A1"), TableName:="Análisis de vuelos")
'añadir los campos
With PT

.PivotFields("Rng Alt").Orientation = xlRowField

.PivotFields("nº ind").Orientation = xlDataField

.PivotFields("Especie").Orientation = xlDataField
End With


[/CODE]

Muchas gracias.

Libro2.xls

publicado

Solo he conseguido colocar los porcentajes a continuación de la tabla. A ver que tal.

He añadido este código al final de tu macro:


'Calcular porcentajes

fila = ActiveSheet.UsedRange.Rows.Count
Range("B:C").Copy Range("D1")
Range("D1:E2").Interior.Color = 15853276
Range("D" & fila & ":E" & fila).Interior.Color = 15853276
Range("D3:E" & fila - 1).Interior.Color = vbWhite
Range("D1:E2").Font.Bold = True
Range("D" & fila & ":E" & fila).Font.Bold = True
Range("D" & fila & ":E" & fila).Borders(xlEdgeTop).Color = 14857357
Range("D3:E3").Borders(xlEdgeTop).Color = 14857357
Range("D1") = "Porcentajes"


For x = 3 To fila - 1
Range("D" & x) = Range("B" & x) / Range("B" & fila)
Range("E" & x) = Range("C" & x) / Range("C" & fila)
Next


Range("D3:E" & fila).NumberFormat = "0.000%"
Range("D" & fila) = 1
Range("E" & fila) = 1


[/CODE]

Volar.xls

publicado

Muchísimas gracias, Macro Antonio, tu solución funciona perfectamente, y además he aprendido un par de trucos nuevos con tu macro, ya que soy totalmente novata en esto y no sé hacer muchas cosas aún, como concatenar la columna con la última fila para crear un rango, lo hago todo siguiendo el libro que tengo que serviría para calzar un camión, pero no vienen trucos, sólo procedimientos estándard

Pero, al ver tu solución me ha parecido demasiado "manual", muy ingeniosa y efectiva, pero no me podía creer que no hubieran pensado en sacar porcentajes los de Excel en una tabla dinámica, así que he seguido investigando por ahí y he encontrado otra solución, efectivamente existe una función pre-establecida para calcular los porcentajes en una tabla dinámica, lo malo es que deben querer que sea un secreto, y cuesta un montón encontrarla, pero finalmente lo he encontrado aquí

Te paso el archivo de nuevo con la otra solución, por si te puede resultar interesante. Por cierto, no sabía ni que podía subir los archivos con las macros, y yo escribiendo el código en el mensaje :upset:, pensé que no se podía por motivos de seguridad o algo así.

Muchas gracias de nuevo.

Volar.xls

publicado

No soy un experto en tablas dinámicas, pero me extrañaba que no pudiera hacerse.

En fin me alegro que te haya servido. Me quedo con tu solución por si acaso la necesito algún día.

Gracias.

publicado

Pero, al ver tu solución me ha parecido demasiado "manual", muy ingeniosa y efectiva, pero no me podía creer que no hubieran pensado en sacar porcentajes los de Excel en una tabla dinámica, así que he seguido investigando por ahí y he encontrado otra solución, efectivamente existe una función pre-establecida para calcular los porcentajes en una tabla dinámica, lo malo es que deben querer que sea un secreto, y cuesta un montón encontrarla, pero finalmente lo he encontrado aquí

Al igual que Macro Antonio yo tampoco soy experto en tablas dinámicas... pero puedo asegurar que si todos nos tomáramos el tiempo de profundizar en su manejo y uso en la interfaz de excel nos daríamos cuenta de sus grandes beneficios y posibilidades!

Muchas personas publican sus problemas esperando una macro que se los resuelva... y algunos de estos problemas podrían resolverse utilizando una tabla dinámica y listo.

"... lo malo es que deben querer que sea un secreto, y cuesta un montón encontrarla, pero finalmente lo he encontrado...", me imagino que te debes de referir al código... por que mucho mas fácil hubiese sido crear la td a como la querías desde un principio y haber utilizado la grabadora de macros para obtener el código! Pero vuelvo a lo mismo Vegaper por lo general no tenemos idea de todas las posibilidades que nos brindan las herramientas de Excel...

Así se construye la td que querías de forma manual:

en rotulos de fila tienes a rng alt, en valores tienes la cuenta de especie.... ahora ahora solo faltan la representación del conteo en la forma de porcentaje... por lo tanto en la lista de campos vuelve a arrastrar el campo especie a valores con lo cual ya tendrás dos columnas con los mismos valores. Ahora solo hay que configurar el campo de la segunda columna como se ve en la imágenes y listo! Si lo puedes hacer manual, lo puedes grabar y tienes el código! Asi que el verdadero secreto es curiosear y jugar un poco con todas las opciones de las herramientas de Excel!

[ATTACH]32599.vB[/ATTACH][ATTACH]32600.vB[/ATTACH][ATTACH]32601.vB[/ATTACH]

Saludos!

post-361-145877005602_thumb.jpg

post-361-145877005604_thumb.jpg

post-361-145877005605_thumb.jpg

publicado
Ahora solo hay que configurar el campo de la segunda columna como se ve en la imágenes y listo!

Lo intenté, grabando la macro, pero es que no vi el desplegable "mostrar resultados como", es la primera vez que hago una tabla dinámica, ni con macros, ni sin macros, mea culpa. De todas formas cuando decía que debía ser un secreto me refería a que tengo más de 1400 páginas en dos libros de macros de excel y te aseguro que ahí sí he mirado bien, y no viene en ninguno nada que no sea suma o cuenta :(

Gracias de todas formas, por el consejo digitalboy. Por desgracia tu consejo no me sirve con la siguiente parte de mi proyecto: hacer gráficos con esas tablas dinámicas ya que me saca un gráfico por defecto al que no puedo quitarle campos, así que tendré que volver a buscar código.:fatigue:

No dudo del "poder de Excel", pero la curva de aprendizaje parece más bien el perfil del L'Angliru, no hay un día que no acabe enlodada en algún paso, así que nos veremos por aquí, que menos mal que al menos estáis vosotros.[h=3][/h]

publicado

cuando decía que debía ser un secreto me refería a que tengo más de 1400 páginas en dos libros de macros de excel y te aseguro que ahí sí he mirado bien, y no viene en ninguno nada que no sea suma o cuenta :(

No dudo del "poder de Excel", pero la curva de aprendizaje parece más bien el perfil del L'Angliru, no hay un día que no acabe enlodada en algún paso, así que nos veremos por aquí, que menos mal que al menos estáis vosotros.

Yo también he comprado libros de macros en Excel y no se diga de mi colección de pdf's que he recapitulado de Internet... pero aun teniendo varios libros no siempre tendrás las respuestas especificas que necesitas ! Por lo menos ese ha sido mi caso... un libro te va enseñar las principales herramientas y aplicaciones, uno como programador debe solucionar el problema haciendo uso y combinando las herramientas aprendidas con buenos algoritmos y practicas de programación!

Los conocimientos que tengo hoy en día no son solo de leer libros sino también del fruto de resolver problemas (algunos en mi vida profesional y otros en este foro).

En cuanto a la curva de aprendizaje... sigue adelante, bien vale el esfuerzo! Creeme que VBA/Excel, esta regalado a comparación de programar en Lenguaje C o Lenguaje Ensamblador. Yo te recomiendo que vayas paso a paso leyendo desde principio a fin esos libros que mencionas y con lo que vas aprendiendo contestar dudas de este foro, uno se sorprende de las opciones que brindan los demás participantes!

Saludos y Éxito!

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.