
Gli array multidimensionali sulle macro Excel
In questa lezione del corso Excel ti spiego come usare gli array multidimensionali in una macro.
Cos'è un array multidimensionale? Si tratta di una struttura dati composta da più di una dimensione. Ad esempio, una matrice è composta da due dimensioni: un numero di righe e un numero di colonne. Gli array multidimensionali sono molto utili se devi gestire grandi quantità di informazioni.
Puoi creare un array multidimensionale usando una di queste sintassi
Dim matrice(0 To 2, 0 To 2)
oppure
Dim matrice(2, 2)
In entrambi i casi crei una matrice 3x3
Nota. In una macro l'indice degli array parte da zero per impostazione predefinita. Quindi, nell'esempio precedente ci sono tre righe con indice 0, 1, 2 e altrettante colonne con indice 0, 1, 2. Se vuoi far partire l'indice da 1 puoi usare l'istruzione Option Base 1.
Ti faccio un esempio pratico
Questa macro svolge i calcoli tramite una matrice.
- Sub Macro()
- Dim myArray(0 To 2, 0 To 2) as Integer
- Dim totale, i, j As Integer
- For i = 0 To 2
- For i = 0 To 2
- myArray(i,j) = Cells(i + 1, j + 1).Value
- totale = totale + myArray(i, j)
- Next j
- Next i
- Range("B5").Value = "Totale"
- Range("C5").Value = totale
- End Sub
La macro definisce un array a due dimensioni (matrice) chiamato "myArray" tramite l'istruzione Dim myArray(0 To 2, 0 To 2) as Integer.
Poi utilizza un doppio ciclo For Next per leggere i numeri nella tabella che si trova sul foglio di calcolo nell'area A1:C3
Infine, calcola la somma degli elementi nell'array e visualizza il risultato nella cella C5.
In questo caso la somma dei valori è 39.
La creazione di un array multidimensionale all'interno di una macro Excel è molto utile per elaborare grandi quantità di dati in modo rapido ed efficiente.
Ad esempio, puoi creare anche array con più di due dimensioni.
Dim matrice(3, 3, 3)
Quest'ultimo comando crea un tensore 3x3x3
Se vuoi conoscere le dimensioni minime e massime di un array multidimensionale puoi usare le funzioni LBound() e Ubound().
Nota. Se la tua macro deve lavorare su un grande array multidimensionale, ti consiglio di utilizzare delle tecniche di ottimizzazione per evitare di avere dei problemi di prestazioni della macro o di memoria sul computer.