Visual Basic para Aplicaciones - Tabla dinamica en VBA

Life is soft - evento anual de software empresarial
 
Vista:

Tabla dinamica en VBA

Publicado por David (9 intervenciones) el 22/08/2015 02:28:23
Hola a todos de nuevo, volvemos a la carga:

Necesito crear una tabla dinámica desde Vba para realizar filtros cruzados y no se como hacerla. He probado incluso a crear una grabando una macro para luego editarla pero ya antes de editarla, solo al ejecutar me daba (incomprensiblemente) error.

Al final he decidido dejar la tabla dinámica y extraer los datos que necesito directamente a una nueva tabla pero la funcion IMPORTARDATOSDINAMICOS no me termina de convencer y yo me pregunto y ya puesto a vosotros también:

La tabla dinámica está configurada para que en el apartado de totales me refleje el precio más bajo de un artículo, existe alguna manera para poder extraer los datos y concatenar el precio con el producto y el supermercado correspondiente al resultado final de la tabla dinámica?

Me explico, la columna de totales cuando tiene el raton encima sin pulsar, me refleja el nombre del producto y el supermercado al que pertenece dicho precio. He probado a mostrar detalles, convertir en celdas la tabla, copiar los datos, eliminar la nueva hoja y pegar, pero si eso lo hago grabando una macro al ejecutarla me va a crear 267 hojas nuevas y ni siquiera se si funcionara el copia y pega.

Alguna idea?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Tabla dinamica en VBA

Publicado por David (9 intervenciones) el 23/08/2015 07:26:49
Buenas a todos, he buscado, buscado y buscado todo el día desde ayer y por casualidad utilice la función buscar y me ha servido para extraer los datos de la tabla dinámica.

Ahora me encuentro con el siguiente dilema, soy novato 90% en Vba aunque voy aprendiendo día a día, pero no sé simplificar la macro grabada para poder editar el código.

Os pego lo que llevo y vemos si a alguien se le ocurre o sabe simplificar la sintaxis:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Range("L3").Select
    ActiveCell.FormulaR1C1 = _
        "=LOOKUP(RC[-1],RC[-10]:RC[-5],R[-1]C[-10]:R[-1]C[-5])"
    With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlBottom
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    Selection.AutoFill Destination:=Range("L3:L4"), Type:=xlFillDefault
    Range("L3:L4").Select
    Range("L4").Select
    ActiveCell.FormulaR1C1 = _
        "=LOOKUP(RC[-1],RC[-10]:RC[-5],R[-2]C[-10]:R[-2]C[-5])"
    Range("L4").Select
    Selection.AutoFill Destination:=Range("L4:L5"), Type:=xlFillDefault
    Range("L4:L5").Select
    Range("L5").Select
    ActiveCell.FormulaR1C1 = _
        "=LOOKUP(RC[-1],RC[-10]:RC[-5],R[-3]C[-10]:R[-3]C[-5])"
    Range("L6").Select


Como veis, he realizado la accion tres veces seguidas para poder encontrar diferencias de acción y saber dónde modificar, pero no me ha servido de mucho. Podría editarlo a mano, pero la tabla sigue creciendo y tendría que hacerlo a diario, asi que me gustaría saber si, además de simplificar la fórmula, a alguien se le ocurre cómo podría pasar a la siguiente linea automáticamente. Había pensado en utizar el comando offset, pero no tengo la menor idea de dónde debería escribirlo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar