Campos de datos en tablas dinámicas

He creado una tabla dinámica con varios campos:cliente, tipo operación y fecha operación en el área FILA del diagrama que el asistente proporciona para construir la tabla y los campos Importe e Iva en el área DATOS .Lo que quería era crear otra columna dentro del área de datos llamada Importe Acumulado que me fuera acumulando los importes de la columna importe.He intentado acceder
al contenido de los campos de la columna Importe de la siguiente forma:
ActiveSheet.PivotTables("Tabla dinámica1").PivotFields("IMPORTE")
.PivotItems(1).Value
Pero en vez de devolverme el primer valor de la columna Importe me devuelve
el menor de los valores de dicha columna. Ademas me sustituye un punto por una coma. ¿Cómo trata excel los campos de datos en una tabla dinámica? ¿Cómo puedo acceder al valor de cada celda de la columna Importe desde una macro en hecha en visual basic?

1 Respuesta

Respuesta
1
Para lo del punto y la coma, tienes que entrar al panel de control de windows y en Configuración Regional y de Idioma cambiar tus preferencias (hazlo con el excel cerrado).
Para lo de la tabla dinámica, lo primero que puedes hacer es doble clic en el campo de IMPORTE y cambia la función de importe a SUMA. Con eso te totalizará.
Si quieres integrar valores (filas o columnas) en la tabla dinámica, te recomiendo que en celdas aparte hagas otra tabla a mano, reverenciando cada celda a la tabla y así podrás manipular, después oculta la tabla dinámica para ver la otra, o deja visibles por ejemplo los conceptos, para que puedas actualizarla.
Si hago doble click como tu dices en el campo importe si que me totaliza, pero no me acumula, es decir solo me muestra el valor de la suma de todos los elementos, pero yo lo que quiero es que por ejemplo si yo tengo en la primera columna los campos de importe, por ejemplo:
A1=5,A2=6,A3=7,A4=8,A5=9
en la segunda columna ,llamada importe acumulado me quedaría así :
B1=5,B2=11,B3=18,B4=26,B5=35
Además preferiblemente debería de poder hacerlo sin una tabla secundaria. Tengo la sensación de que no se puede hacer, al menos si importe acumulado está situado en el área DATOS, ni siquiera haciendo una macro en Visual Basic, ya que excel no permite acceder a ellos ni modificarlos haciendo bucles que vayan recorriendo las filas, al menos si están situados en el área de DATOS ...
De hecho, la macro no te permite tocar los datos de una tabla dinámica (en teoría, ni siquiera las celdas que están incluidas).
Puedes posicionarte en B2 de tu ejemplo y ponerle =B1+A2 y copiar esta celda para abajo hasta donde de tu tabla dinámica.
Obvio, tendrías que poner en B1 la fórmula =A1 para que se incluya en los acumulados.
Si hago lo que tu me dices, es decir, poner en la columna importe acumulado (B1+A2, B2+A3...) de la tabla, cuando creo la tabla dinámica excel ordena el campo importe en función del orden que tengan los campos situados en el área de FILA, es decir que me va a ordenar el importe de forma diferente a como yo lo tenia en la tabla(estática), por lo tanto el resultado del importe acumulado tendría que ser diferente al de la tabla estática, independientemente de si yo pongo celdas relativas (B1+A2, B2+A3...) o absolutas ($B1+$A2,$B2+$A3...), y peor aun cuando quito algún campo de la tabla dinámica...
Entonces no tengo bien claro qué es lo que deseas, te propongo que me envíes tu archivo a [email protected] poniendo en el asunto "TodoExpertos" y en el mail me especifiques qué debe salir o me pongas un ejemplo de lo que quisieras obtener, para ver cómo podría hacerse.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas