Notifications
Clear all

Preenchendo um array multidimensional

6 Posts
2 Usuários
0 Reactions
1,529 Visualizações
(@robo8268)
Posts: 73
Trusted Member
Topic starter
 

Pessoal, devido a necessidade de um calculo complexo, tive que colocar uma tabela dinâmica ao lado da outra, ou seja, uma na esquerda e outra na direita.

Eu queria popular um array de duas dimensões, com os nomes da dinâmica da esquerda na primeira dimensão, e o nome da direta na segunda dimensão.

Estou no trabalho no momento, e irei upar o arquivo de exemplo quando chegar em casa.

Vou tentar ilustrar a minha necessidade

tabeladinamica1 | tabeladinamica2

tabela dinamica3 | tabeladinamica4

o meu array deveria ficar assim:
array(0,0) = tabeladinamica1, tabeladinamica2
array(1,1) = tabela dinamica3, tabeladinamica4

quando o numero de dinamicas mudará conforme a ação do usuario, eu estou usando um for each para esta tarefa, porém eu não consigo colocar o nome da primeira tabela na primeira dimensão e o da direita na segunda...

cont = 0


    For Each PT In Sheets("Volumetria").PivotTables
        
      pivotNames(cont, cont) = PT.name
        cont = cont + 1
    Next
    
 
Postado : 10/02/2016 1:00 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

se a matriz tem duas dimensões seu loop precisa ter dois contadores

a matriz é:
pivotnames(0,0) = "qquer coisa"
pivotnames(0,1) = "outra coisa"

Fez sentido ? É como linhas e colunas... cada linha tem duas colunas, vc assim como está fazendo, preenche o item 0,0 depois o item 1,1 e dps o 2,2, que não existe conforme sua descrição...

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 10/02/2016 1:05 pm
(@robo8268)
Posts: 73
Trusted Member
Topic starter
 

então fernando, na verdade eu quero gravar um nome em uma dimensão, e o próximo nome na outra dimensão...

Por exemplo

array(0,0) = tabela1, tabela2
array (1,1) = tabela3 tabela4

 
Postado : 10/02/2016 1:14 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Isso vc deixou claro...
o loop seria algo assim:
for x = 1 to qtdTDs
for y = 1 to qtdDimensoes
matriz(x,y) = "TD" & x & y
next y
next x

Vc ainda está insistindo em usar o cont nas duas dimensoes.... entenda, sua matriz é bidimensional. Ela tem duas dimensoes. a primeira dimensão vai variar conforme a qtd de tabelas dinamicas, mas a segunda dimensao só possui 2 itens.
aparentemente, seu problema não é no conceito, mas na execução. Colocar um item nas multiplas dimensoes da planilha é assim com eu disse, não como vc disse.

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 10/02/2016 1:17 pm
(@robo8268)
Posts: 73
Trusted Member
Topic starter
 

Fernando, entendi o que você quis dizer, porém como eu posso adaptar isso em um foreach?

 
Postado : 10/02/2016 1:27 pm
(@robo8268)
Posts: 73
Trusted Member
Topic starter
 

Fernando, consegui resolver o meu problema, porém a sua dica foi muito útil para que eu conseguisse isso, muito obrigado.

Eis o código que usei:
cont= 0
contx = 0
For Each PT In Sheets("Volumetria").PivotTables
If cont = 0 Then
pivotNames(cont, contx) = PT.name
contx = contx + 1
End If
If contx = 30 Then cont = cont + 1 'o meu array tem 30 dimensões
Next

 
Postado : 10/02/2016 1:33 pm