Notifications
Clear all

O que é um Array unidimensional e bidimensional?

6 Posts
3 Usuários
0 Reactions
1,759 Visualizações
leandroxtr
(@leandroxtr)
Posts: 447
Reputable Member
Topic starter
 

Bom dia, pessoal!

Minha cabecinha está ruim ultimamente e estou com grandes dificuldades para entender verdadeiramente o que são Arrays uni e bidimensaional. Andei lendo alguns fóruns e dei um "google" pra tentar encontrar alguma resposta mais clara e didática, mas ainda não consegui entender. O conceito em si até que sei, mas não entendo a aplicabilidade desse bagulho de jeito nenhum rs.

Alguém poderia me ajudar, inclusive com exemplos em código?
Ficarei MUITO grato pela contribuição, pois já tem um tempo que estou tentando aprender isso. rs

Abraços !

Se te ajudou, não se esqueça de dar um like na resposta e marcar o tópico como finalizado.

Abraços!
Leandro Cordeiro

 
Postado : 19/07/2018 6:57 am
gfranco
(@wzxnet7)
Posts: 653
Honorable Member
 

Bom dia.
Acredito firmemente que explicar não é meu forte.
Procurei esforçar-me para comentar o máximo possível e deixar clara a mensagem que quero passar.
Veja o anexo, rode cada macro no editor do VBA e vá observando os resultados tanto na janela de verificação imediata como na janela de variáveis locais.

Resposta útil? Clique na mãozinha ao lado do botão Citar.

 
Postado : 19/07/2018 8:31 am
gfranco
(@wzxnet7)
Posts: 653
Honorable Member
 

Um item importante que vou deixar apenas escrito aqui para facilitar a quem estiver pesquisando no fórum.
Um array bi-dimensional só pode ser redimensionado na sua dimensão de colunas (sua dimensão 2), logo, quando se deseja montar uma matriz resultado (por exemplo) onde seu tamanho irá variar em função de uma certa quantidade de resultados que serão obtidos em tempo de execução (um teste lógico, por exemplo) eu costumo usar a técnica dos dois Loop's.
O primeiro Loop, faz o teste lógico e incrementa um contador que irá determinar o total de resultados que serão obtidos.
De posse desse número de resultados, posso redimensionar minha matriz usando o redim:

redim matrizResultado (1 to meu_contador,1 to 5)

por exemplo

Redimensionada a matrizResultado basta repetir o loop, agora preenchendo de fato a matriz resultado.

Nesse vídeo que eu fiz um tempo atrás eu mostro essa técnica dos dois Loop's:
https://www.youtube.com/watch?v=7ail9u-wvhg&t=192s

Resposta útil? Clique na mãozinha ao lado do botão Citar.

 
Postado : 19/07/2018 8:47 am
EdsonBR
(@edsonbr)
Posts: 1057
Noble Member
 

De maneira didática, daria pra fazer uma analogia entre matrizes e pastas de trabalho Excel.

Uma matriz Unidimensional, seria o equivalente a uma única coluna de uma planilha, como se as outras colunas não existissem. Assim, cada elemento da matriz corresponderia a cada célula dessa coluna de células. Assim, o elemento MinhaMat(3) seria a 3ª célula dessa coluna.

Já uma matriz bidimensional, corresponderia a uma planilha inteira. Para conseguir se referir de forma única a um certo elemento dessa matriz, é preciso dar 2 endereços: o da primeira dimensão (linha) e o da segunda dimensão (coluna). Então, o elemento MinhaMat(3,2) seria a célula no encontro da 3ª linha com a 2ª coluna, portanto B3.

Por sua vez, uma matriz de 3 dimensões, seria comparado ao .xlsx inteiro. O elemento MinhaMat(2,1,4) seria o equivalente à célula D1 da Plan2 desse Workbook.

Poderíamos imaginar então uma matriz de 4 dimensões como sendo uma pasta do Windows com vários .xlsx: Localizaríamos precisamente o elemento MinhaMat(4,2,5,6) como correlacionado à célula F5 da Plan2 da Pasta4.xlsx.

Expandindo essa série para 5, 6, 7... dimensões e seguindo o mesmo raciocínio, seria correto equiparar com várias subpastas dentro de outras pastas dentro de outros HD's dentro de vários PC's dentro de várias redes... ad infinitum.

Grosso modo seria uma estrutura hierárquica em que cada nível de hierarquia é uma dimensão e vc consegue acessar um elemento individual fornecendo o valor de cada dimensão.

Em termos práticos e por limitações (uso exponencial de memória a cada nova dimensão, facilidades com uso de outros recursos, etc.) raramente se usam matrizes de 3 ou mais dimensões embora o VBA aceite até 60 dimensões.

 
Postado : 19/07/2018 10:16 am
leandroxtr
(@leandroxtr)
Posts: 447
Reputable Member
Topic starter
 

Como não agradecer uma contribuição tão generosa?
Muito obrigado pela força... Consegui entender finalmente esta bendita "Array".
Direto vejo pessoas perguntando ou postando algo relacionado e eu fico boiando. Ajudou bastante.
Obrigado também pela planilha tão bem elaborada.

Obrigado também EdsonBr, voces são ******.
Um abraço!

Se te ajudou, não se esqueça de dar um like na resposta e marcar o tópico como finalizado.

Abraços!
Leandro Cordeiro

 
Postado : 19/07/2018 10:42 am
leandroxtr
(@leandroxtr)
Posts: 447
Reputable Member
Topic starter
 

Edson, show de bola sua resposta...
Super didático, entendi perfeitamente o raciocínio.

Se te ajudou, não se esqueça de dar um like na resposta e marcar o tópico como finalizado.

Abraços!
Leandro Cordeiro

 
Postado : 19/07/2018 10:46 am