Tablas dinámicas y vba

4 envíos / 0 nuevos
Último envío
Cron
Imagen de Cron
Offline
última acción: Hace 8 meses 2 días
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntos
alta: 23/06/2010 - 12:30
Puntos: 12735
Tablas dinámicas y vba

Hola

 

Estoy con un programa en el que utilizo una tabla dinámica que cuenta las veces que se repiten una serie de datos.

Finalmente, quiero extraer los datos de la tabla dinámica, localizarlos en la tabla general y descontar las repeticiones.

 

Es decir

Necesito extraer los datos uno a uno, localizar su fila y su columna. Luego utilizaré el valor de fila y de columna para localizar por mi cuenta el dato dentro de una tabla mucho más grande.

 

El caso es que sé cómo introducir el dato en una celda. La grabadora de macros me graba esto:

    ActiveCell.FormulaR1C1 = "=+GETPIVOTDATA(""Nombre"",R3C1,""Nombre"",""Carbono orgánico total (COT)"",""PeriodoDeReferencia"",2012)"

 
Pero esto no es utilizable en mi macro por varias razones:
1- al copiarlo tal cual, me da errores 1004
2- no quiero utilizar una celda como intermediaria
3- los valores "Carbono orgánico total (COT)" o 2012 son variables. Cambiarán en cada ejecución de la macro.
 
He buscado en la ayuda de Microsoft, pero sirve de bastante poco desde que utilizan la generación automática de artículos de ayuda. Es ayuda mal documentada, con ejemplos no autoexplicativos o sin ejemplos.
 
Así que, por favor, necesito un poquito de ayuda ;)
 
 
Saludos
Creí_que_sabía_Excel
Imagen de Creí_que_sabía_Excel
Offline
última acción: Hace 9 años 8 meses
alta: 11/04/2014 - 18:36
Puntos: 95
Re: Tablas dinámicas y vba

Buenas tardes, Cron.

Yo no le veo problema a la formula desde la macro, de hecho a partir de tu información, he creado una tabla (en la Hoja1) y una tabla dinámica (en la Hoja4), que debe parecerse a lo que tú tienes y he ejecutado la opción de generar macro, como tú has hecho y yo no he tenido problemas. (No me salía ese +, pero era igual).

De todos modos he añadido otras dos macros más, de modo que te dejo un fichero con tres macros.

1.- La que genera el Excel

2.- Una pasando la fórmula a una variable de texto (Básicamente es concatenar textos con la condición que la " tienes que poner 4 "

3.- Una pasando la fórmula a una variable y poniendo en lugar de valores variables

 

Les echas un vistazo y me cuentas

AdjuntoTamaño
Office spreadsheet icon tabla_dinamica.xls49 KB
Cron
Imagen de Cron
Offline
última acción: Hace 8 meses 2 días
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntos
alta: 23/06/2010 - 12:30
Puntos: 12735
Re: Tablas dinámicas y vba

Gracias por responder

 

He mirado las tres alternativas, pero sigue sin convencerme.

Las tres opciones necesitan una celda para introducir la fórmula.

 

A mí lo que me gustaría es asignar el valor, dada una fila y una columna, directamente a una variable.

 

De todas maneras, lo que me has mandado me resuelve el problema, muchas gracias.

Creí_que_sabía_Excel
Imagen de Creí_que_sabía_Excel
Offline
última acción: Hace 9 años 8 meses
alta: 11/04/2014 - 18:36
Puntos: 95
Re: Tablas dinámicas y vba

Siempre puedes calcular el valor de la celda directamente:

En el ejemplo que te mandé:

Function buscar(nombre As String, periodo As Integer)

Dim fila As Integer

Dim columna As Integer

'Hoja4 es el nombre de la hoja en la que está la tabla dinámica

'Supongo que lo que ocupa tu tabla no es más que ese rango

fila = Sheets("Hoja4").Range("A1:Z10").Find(nombre).Row 

columna = Sheets("Hoja4").Range("A1:Z10").Find(periodo).Column

buscar = Cells(fila, columna).value

End Function