banner2

Home Foros Foro dudas Foro de Excel Duda: Función ImportarDatosDinámicos en VBA

Duda: Función ImportarDatosDinámicos en VBA

Este debate contiene 0 respuestas, tiene 1 mensaje y lo actualizó  Anónimo hace 11 meses, 3 semanas.

Viendo 1 publicación (de un total de 1)
  • Autor
    Publicaciones
  • #7273

    Anónimo

    <p class=”MsoNormal”>Buenos días. Me pongo en contacto con usted por una duda que no he sido capaz de encontrar en ningún foro, tutorial, video, etc.</p>
    <p class=”MsoNormal”>Para situar mi problema, estoy aprendiendo VBA a la vez que lo aplico a mi trabajo, pero no doy con la sintaxis adecuada para que se ejecute correctamente.</p>
    <p class=”MsoNormal”>El enunciado de mi problema sería el siguiente: tengo una tabla dinámica con un filtro por región (región1, región2 y región3). Columnas divididas en meses del año (enero a diciembre) y filas con tres tipos de ofertas (oferta1, oferta2 y oferta3). Los datos son cuenta de número ofertas.</p>
    <p class=”MsoNormal”>Quiero extraer los datos de noviembre totales para cada región y hasta ahora lo hacía usando la función ImportarDatos y copiando el valor, pero es un trabajo muy lento y pesado para el ordenador y más si lo extrapolamos a que son muchas tablas dinámicas, regiones, etc.</p>
    <p class=”MsoNormal”>He leído que mediante matrices que guarden los valores y luego lo copien en un rango se ahorra mucho tiempo.</p>
     
    <p class=”MsoNormal”>Estoy intentando copiar cada valor por región a un hueco de la matriz, pero no conozco la sintaxis. ¿Podría ayudarme?</p>
    <p class=”MsoNormal”><b><u>Primera opción (lenta)</u></b></p>
    <p class=”MsoNormal”>Sub Cuenta()</p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt;”>ActiveSheet.PivotTables(“Tabla dinámica1”).PivotFields(“Región”).CurrentPage = _</p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt;”>        <span lang=”EN-US”>”(All)”</span></p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt;”><span lang=”EN-US”>With ActiveSheet.PivotTables(“Tabla dinámica1”).PivotFields(“Región”) </span></p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt; text-indent: 35.4pt;”><span lang=”EN-US”>.PivotItems(“Región1″).Visible = True</span></p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt; text-indent: 35.4pt;”><span lang=”EN-US”>.PivotItems(“Región2″).Visible = False</span></p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt; text-indent: 35.4pt;”><span lang=”EN-US”>.PivotItems(“Región3″).Visible = False</span></p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt;”><span lang=”EN-US”>End With</span></p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt;”><span lang=”EN-US”>Range(“A20″).Select</span></p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt;”><span lang=”EN-US”>ActiveCell.FormulaR1C1 = _</span></p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt;”><span lang=”EN-US”>        </span>”=GETPIVOTDATA(“”Ofertas””, R4C2,””Mes””,11)”</p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt;”>Range(“A21″).Select</p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt;”><span lang=”EN-US”>Range(“A20″).Select</span></p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt;”><span lang=”EN-US”>Selection.Copy</span></p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt;”><span lang=”EN-US”>Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _</span></p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt;”><span lang=”EN-US”>        :=False, Transpose:=False</span></p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt;”><span lang=”EN-US”>ActiveSheet.Paste</span></p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt;”><span lang=”EN-US”>Application.CutCopyMode = False</span></p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt;”><span lang=”EN-US”> </span></p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt;”>ActiveSheet.PivotTables(“Tabla dinámica1”).PivotFields(“Región”).CurrentPage = _</p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt;”>        <span lang=”EN-US”>”(All)”</span></p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt;”><span lang=”EN-US”>With ActiveSheet.PivotTables(“Tabla dinámica1”).PivotFields(“Región”) </span></p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt; text-indent: 35.4pt;”><span lang=”EN-US”>.PivotItems(“Región1″).Visible = False</span></p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt; text-indent: 35.4pt;”><span lang=”EN-US”>.PivotItems(“Región2″).Visible = True</span></p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt; text-indent: 35.4pt;”><span lang=”EN-US”>.PivotItems(“Región3″).Visible = False</span></p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt;”><span lang=”EN-US”>End With</span></p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt;”><span lang=”EN-US”>Range(“A21″).Select</span></p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt;”><span lang=”EN-US”>ActiveCell.FormulaR1C1 = _</span></p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt;”><span lang=”EN-US”>        </span>”=GETPIVOTDATA(“”Ofertas””, R4C2,””Mes””,11)”</p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt;”>Range(“A22″).Select</p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt;”><span lang=”EN-US”>Range(“A21″).Select</span></p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt;”><span lang=”EN-US”>Selection.Copy</span></p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt;”><span lang=”EN-US”>Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _</span></p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt;”><span lang=”EN-US”>        :=False, Transpose:=False</span></p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt;”><span lang=”EN-US”>ActiveSheet.Paste</span></p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt;”><span lang=”EN-US”>Application.CutCopyMode = False</span></p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt;”><span lang=”EN-US”> </span></p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt;”>ActiveSheet.PivotTables(“Tabla dinámica1”).PivotFields(“Región”).CurrentPage = _</p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt;”>        <span lang=”EN-US”>”(All)”</span></p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt;”><span lang=”EN-US”>With ActiveSheet.PivotTables(“Tabla dinámica1”).PivotFields(“Región”) </span></p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt; text-indent: 35.4pt;”><span lang=”EN-US”>.PivotItems(“Región1″).Visible = False</span></p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt; text-indent: 35.4pt;”><span lang=”EN-US”>.PivotItems(“Región2″).Visible = False</span></p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt; text-indent: 35.4pt;”><span lang=”EN-US”>.PivotItems(“Región3″).Visible = True</span></p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt;”><span lang=”EN-US”>End With</span></p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt;”><span lang=”EN-US”>Range(“A22″).Select</span></p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt;”><span lang=”EN-US”>ActiveCell.FormulaR1C1 = _</span></p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt;”><span lang=”EN-US”>        </span>”=GETPIVOTDATA(“”Ofertas””, R4C2,””Mes””,11)”</p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt;”>Range(“A21″).Select</p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt;”><span lang=”EN-US”>Range(“A22″).Select</span></p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt;”><span lang=”EN-US”>Selection.Copy</span></p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt;”><span lang=”EN-US”>Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _</span></p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt;”><span lang=”EN-US”>        :=False, Transpose:=False</span></p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt;”><span lang=”EN-US”>ActiveSheet.Paste</span></p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt;”><span lang=”EN-US”>Application.CutCopyMode = False</span></p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt;”><span lang=”EN-US”> </span></p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt;”><span lang=”EN-US”> </span></p>
    <p class=”MsoNormal”><b><u>Segunda opción (¿más rápida?</u></b><b><u><span lang=”EN-US”>)</span></u></b></p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt;”><span lang=”EN-US”>Dim i As Byte, j As Byte</span></p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt;”><span lang=”EN-US”>Dim fila As Byte, columna As Byte</span></p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt;”><span lang=”EN-US”>Dim rango As Range</span></p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt;”><span lang=”EN-US”>Dim vector() As Long</span></p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt;”><span lang=”EN-US”> </span></p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt;”><span lang=”EN-US”>i = 3</span></p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt;”><span lang=”EN-US”>j = 1</span></p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt;”><span lang=”EN-US”> </span></p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt;”><span lang=”EN-US”>ReDim vector(i, j)</span></p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt;”><span lang=”EN-US”>  Set rango = Range(“Z20”, “Z22″)</span></p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt;”><span lang=”EN-US”>  For fila = 1 To i</span></p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt;”><span lang=”EN-US”>    For columna = 1 To j</span></p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt;”><span lang=”EN-US”>        </span></p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt; text-indent: 35.4pt;”><span lang=”EN-US”>If i = 1 Then</span></p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt;”><span lang=”EN-US”>     </span>ActiveSheet.PivotTables(“Tabla dinámica1”).PivotFields(“Región”).CurrentPage = _</p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt;”>        <span lang=”EN-US”>”(All)”</span></p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt;”><span lang=”EN-US”>    With ActiveSheet.PivotTables(“Tabla dinámica1”).PivotFields(“Región”)</span></p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt; text-indent: 35.4pt;”><span lang=”EN-US”>.PivotItems(“Región1″).Visible = True</span></p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt; text-indent: 35.4pt;”><span lang=”EN-US”>.PivotItems(“Región2″).Visible = False</span></p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt; text-indent: 35.4pt;”><span lang=”EN-US”>.PivotItems(“Región3″).Visible = False</span></p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt;”><span lang=”EN-US”>    End With</span></p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt;”><span lang=”EN-US”>    </span><span style=”background: red; mso-highlight: red;”>vector(fila, columna) = GETPIVOTDATA(“”Ofertas””, R4C2,””Mes””,11)”</span></p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt;”></p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt; text-indent: 35.4pt;”><span lang=”EN-US”>ElseIf i = 2 Then</span></p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt;”><span lang=”EN-US”>     </span>ActiveSheet.PivotTables(“Tabla dinámica1”).PivotFields(“Región”).CurrentPage = _</p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt;”>        <span lang=”EN-US”>”(All)”</span></p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt;”><span lang=”EN-US”>    With ActiveSheet.PivotTables(“Tabla dinámica1”).PivotFields(“Región”)</span></p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt; text-indent: 35.4pt;”><span lang=”EN-US”>.PivotItems(“Región1″).Visible = False</span></p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt; text-indent: 35.4pt;”><span lang=”EN-US”>.PivotItems(“Región2″).Visible = True</span></p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt; text-indent: 35.4pt;”><span lang=”EN-US”>.PivotItems(“Región3″).Visible = False</span></p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt;”><span lang=”EN-US”>    End With</span></p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt;”><span lang=”EN-US”>    </span><span style=”background: red; mso-highlight: red;”>vector(fila, columna) = GETPIVOTDATA(“”Ofertas””, R4C2,””Mes””,11)”</span></p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt;”></p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt; text-indent: 35.4pt;”><span lang=”EN-US”>Else: i = 3 Then</span></p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt;”><span lang=”EN-US”>     </span>ActiveSheet.PivotTables(“Tabla dinámica1”).PivotFields(“Región”).CurrentPage = _</p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt;”>        <span lang=”EN-US”>”(All)”</span></p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt;”><span lang=”EN-US”>    With ActiveSheet.PivotTables(“Tabla dinámica1”).PivotFields(“Región”)</span></p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt; text-indent: 35.4pt;”><span lang=”EN-US”>.PivotItems(“Región1″).Visible = False</span></p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt; text-indent: 35.4pt;”><span lang=”EN-US”>.PivotItems(“Región2″).Visible = False</span></p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt; text-indent: 35.4pt;”><span lang=”EN-US”>.PivotItems(“Región3″).Visible = True</span></p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt;”><span lang=”EN-US”>    End With</span></p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt;”><span lang=”EN-US”>    </span><span style=”background: red; mso-highlight: red;”>vector(fila, columna) = GETPIVOTDATA(“”Ofertas””, R4C2,””Mes””,11)”</span></p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt;”><span lang=”EN-US”>End If</span></p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt;”><span lang=”EN-US”> </span></p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt; text-indent: 35.4pt;”><span lang=”EN-US”>Next columna</span></p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt;”><span lang=”EN-US”>    Next fila</span></p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt;”><span lang=”EN-US”>    </span></p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt;”><span lang=”EN-US”>    </span>rango.Value = vector</p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt;”></p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt;”>End Sub</p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt;”></p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt;”>————————-</p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt;”></p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt;”></p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt;”>La zona en rojo es la que no sé cómo relacionar para agregar el dato. Es posible que falten variables porque como comento, soy nuevo programando.</p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt;”></p>
    <p class=”MsoNormal” style=”margin-bottom: .0001pt;”>Espero que puedan ayudarme.</p>
     
    <p class=”MsoNormal” style=”margin-bottom: .0001pt;”>Muchas gracias.</p>

Viendo 1 publicación (de un total de 1)

Debes estar registrado para responder a este debate.

Píldoras Informáticas

Comencé esta aventura para dar soporte a mis alumnos presenciales. Con el apoyo de todos los que me seguís mi canal de YouTube y esta web han crecido mucho más de lo que yo esperaba. Gracias a todos por estar ahí.

Quién está aquí ahora

Foto del perfil de MacK
Foto del perfil de María de los Ángeles Chaves
Foto del perfil de sephirok
Foto del perfil de Emegias
Foto del perfil de Carlos