Che cos'è un array VBA in Excel e come programmarne uno
VBA fa parte della suite Microsoft Office da molti anni. (Microsoft Office)Sebbene non disponga della funzionalità e della potenza complete di un'applicazione VB completa, VBA offre agli utenti di Office la flessibilità per integrare i prodotti Office e automatizzare il lavoro che svolgi al loro interno.
Uno degli strumenti più potenti disponibili in VBA è la capacità di caricare un'intera gamma di dati in un'unica variabile chiamata array. Caricando i dati in questo modo, puoi manipolare o eseguire calcoli su quell'intervallo di dati in vari modi.
Quindi cos'è un array VBA ? In questo articolo risponderemo a questa domanda e ti mostreremo come usarne uno nel tuo script VBA(your own VBA script) .
Che cos'è un array VBA?
L'uso di un array VBA in (VBA)Excel è molto semplice, ma comprendere il concetto di array può essere un po' complesso se non ne hai mai usato uno.
Pensa(Think) a un array come a una scatola con sezioni al suo interno. Un array unidimensionale è una scatola con una linea di sezioni. Un array bidimensionale è una scatola con due linee di sezioni.
Puoi inserire i dati in ogni sezione di questa "scatola" nell'ordine che preferisci.
All'inizio del tuo script VBA , devi definire questa "scatola" definendo il tuo array VBA . Quindi, per creare un array che può contenere un set di dati (un array unidimensionale), dovresti scrivere la riga seguente.
Dim arrMyArray(1 To 6) As String
Più avanti nel tuo programma, puoi inserire i dati in qualsiasi sezione di questo array facendo riferimento alla sezione tra parentesi.
arrMyArray(1) = "Ryan Dube"
È possibile creare una matrice bidimensionale utilizzando la riga seguente.
Dim arrMyArray(1 To 6,1 to 2) As Integer
Il primo numero rappresenta la riga e il secondo è la colonna. Quindi l'array sopra potrebbe contenere un intervallo con 6 righe e 2 colonne.
Puoi caricare qualsiasi elemento di questo array con i dati come segue.
arrMyArray(1,2) = 3
Questo caricherà un 3 nella cella B1.
Un array può contenere qualsiasi tipo di dati come variabile regolare, come stringhe, valori booleani, numeri interi, float e altro.
Il numero tra parentesi può anche essere una variabile. I programmatori usano comunemente un ciclo(Loop) For per contare tutte le sezioni di un array e caricare le celle di dati nel foglio di calcolo nell'array. Vedrai come farlo più avanti in questo articolo.
Come programmare un array VBA in Excel
Diamo un'occhiata a un semplice programma in cui potresti voler caricare informazioni da un foglio di calcolo in un array multidimensionale.
Ad esempio, diamo un'occhiata a un foglio di calcolo delle vendite di prodotti, in cui desideri estrarre il nome del rappresentante, l'articolo e la vendita totale dal foglio di calcolo.
Si noti che in VBA quando si fa riferimento a righe o colonne, si contano righe e colonne(rows and columns) a partire dall'angolo in alto a sinistra da 1. Quindi la colonna rappresentante è 3, la colonna elemento è 4 e la colonna totale è 7.
Per caricare queste tre colonne su tutte le 11 righe, dovrai scrivere il seguente script.
Dim arrMyArray(1 To 11, 1 To 3) As String
Dim i As Integer, j As Integer
For i = 2 To 12
For j = 1 To 3
arrMyArray(i-1, j) = Cells(i, j).Value
Next j
Next i
Noterai che per saltare la riga di intestazione, il numero di riga nel primo For look deve iniziare da 2 anziché da 1. Ciò significa che devi sottrarre 1 per il valore della riga dell'array quando carichi il valore della cella nell'array usando Cells (i, j).Value.
Dove inserire lo script di array VBA(Your VBA Array Script)
Per inserire nel programma uno script VBA in (VBA)Excel , è necessario utilizzare l' editor VBA . Puoi accedervi selezionando il menu Sviluppatore e selezionando (Developer)Visualizza codice(View Code) nella sezione Controlli(Controls) della barra multifunzione.
Se non vedi lo sviluppatore(Developer) nel menu, dovrai aggiungerlo. Per fare ciò, seleziona File e Opzioni(Options) per aprire la finestra Opzioni di Excel.
Cambia i comandi di scelta dal menu a discesa in Tutti i comandi(All Commands) . Seleziona Sviluppatore(Developer) dal menu a sinistra e seleziona il pulsante Aggiungi(Add) per spostarlo nel riquadro a destra. Seleziona la casella di controllo per abilitarla e seleziona OK per terminare.
Quando si apre la finestra Editor di codice(Code Editor) , assicurati che il foglio in cui si trovano i tuoi dati sia selezionato nel riquadro di sinistra. Seleziona Foglio(Worksheet) di lavoro nel menu a discesa a sinistra e Attiva(Activate) a destra. Questo creerà una nuova subroutine chiamata Worksheet_Activate ().
Questa funzione verrà eseguita ogni volta che viene aperto il file del foglio di calcolo. Incolla il codice nel riquadro degli script all'interno di questa subroutine.
Questo script funzionerà attraverso le 12 righe e caricherà il nome del rappresentante dalla colonna 3, l'articolo dalla colonna 4 e la vendita totale dalla colonna 7.
Una volta che entrambi i cicli For sono terminati, l'array bidimensionale arrMyArray contiene tutti i dati specificati dal foglio originale.
Manipolazione di array in Excel VBA
Supponiamo di voler applicare un'imposta sulle vendite del 5% a tutti i prezzi di vendita finali, quindi scrivere tutti i dati in un nuovo foglio.
Puoi farlo aggiungendo un altro ciclo For dopo il primo, con un comando per scrivere i risultati su un nuovo foglio.
For k = 2 To 12
Sheets("Sheet2").Cells(k, 1).Value = arrMyArray(k - 1, 1)
Sheets("Sheet2").Cells(k, 2).Value = arrMyArray(k - 1, 2)
Sheets("Sheet2").Cells(k, 3).Value = arrMyArray(k - 1, 3)
Sheets("Sheet2").Cells(k, 4).Value = arrMyArray(k - 1, 3) * 0.05
Next k
Questo "scaricherà" l'intero array in Sheet2 , con una riga aggiuntiva contenente il totale moltiplicato per 5% per l'importo dell'imposta.
Il foglio risultante sarà simile a questo.
Come puoi vedere, gli array VBA in (VBA)Excel sono estremamente utili e versatili come qualsiasi altro trucco di Excel(any other Excel trick) .
L'esempio sopra è un uso molto semplice per un array. Puoi creare array molto più grandi ed eseguire l'ordinamento, la media o molte altre funzioni in base ai dati in essi archiviati.
Se vuoi diventare davvero creativo, puoi persino creare due array contenenti un intervallo di celle(containing a range of cells) da due fogli diversi ed eseguire calcoli tra gli elementi di ciascun array.
Le applicazioni sono limitate solo dalla tua immaginazione.
Related posts
Come eliminare le righe vuote in Excel
Come utilizzare la funzione Speak Cells di Excel
Come inserire un foglio di lavoro Excel in un documento di Word
Come utilizzare l'analisi What-If di Excel
Come correggere una riga in Excel
Come rimuovere le righe duplicate in Excel
Come correggere gli errori #N/D in formule di Excel come CERCA.VERT
Come ordinare per data in Excel
Come inserire rapidamente più righe in Excel
Usa i nomi degli intervalli dinamici in Excel per i menu a discesa flessibili
Come utilizzare i riferimenti assoluti in Excel
Come utilizzare le istruzioni If e Nested If in Excel
Ordinamento di base dei dati a una e più colonne nei fogli di calcolo di Excel
Come cercare in Excel
3 modi per dividere una cella in Excel
10 suggerimenti e trucchi di Excel per il 2019
Come inserire CSV o TSV in un foglio di lavoro Excel
Come aprire Word ed Excel in modalità provvisoria
Centrare i dati del foglio di lavoro in Excel per la stampa
Come calcolare il punteggio Z in Excel