Che cos'è una matrice VBA in Excel e come programmarne una


VBA fa parte della suite Microsoft Office da molti anni. Sebbene non disponga della piena funzionalità e potenza di un'applicazione VB completa, VBA offre agli utenti di Office la flessibilità di integrare i prodotti Office e automatizzare il lavoro svolto in essi.

Uno degli strumenti più potenti disponibile in VBA è la capacità di caricare un intero intervallo di dati in una singola 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 in il tuo script VBA.

Che cos'è un array VBA?

Utilizzando un VBA array in Excel è molto semplice, ma comprendere il concetto di array può essere un po 'complesso se non ne hai mai usato uno.

Pensa a un array come una scatola con sezioni al suo interno. Una matrice 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.

In_content_1 all: [300x250] / DFP: [640x360]->

All'inizio dello script VBA, è necessario definire questa "casella" definendo l'array VBA. Quindi per creare un array che può contenere un set di dati (un array monodimensionale), dovresti scrivere la seguente riga.

Dim arrMyArray(1 To 6) As String

Più avanti nel tuo programma, puoi posizionare dati in qualsiasi sezione di questo array facendo riferimento alla sezione all'interno delle parentesi.

arrMyArray(1) = "Ryan Dube"

Puoi creare un array bidimensionale usando la seguente riga.

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 una normale variabile, come stringhe, booleani, numeri interi, float e altro.

Il il numero tra parentesi può anche essere una variabile. I programmatori usano comunemente un ciclo For per contare tutte le sezioni di un array e caricare 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 si desidera estrarre dal foglio di calcolo il nome, l'articolo e la vendita totale del rappresentante di vendita.

Nota che in VBA quando fai riferimento a righe o colonne, conti righe e colonne partendo da in alto a sinistra su 1. Quindi la colonna rappresentante è 3, la colonna elemento è 4 e la colonna totale è 7.

Per caricare queste tre colonne su tutte e 11 le righe, devi 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 aspetto deve iniziare da 2 anziché da 1. Ciò significa che devi sottrarre 1 per il valore della riga di matrice quando carichi il valore della cella nell'array utilizzando Cells (i, j) .Value.

Dove inserire lo script dell'array VBA

Per posizionare un programma uno script VBA in Excel, è necessario utilizzare il Editor VBA. Puoi accedervi selezionando il menu Sviluppatoree selezionando Visualizza codicenella sezione Controlli della barra multifunzione.

Se non vedi lo sviluppatore nel menu, dovrai aggiungilo. Per fare ciò, seleziona Filee Opzioniper aprire la finestra Opzioni di Excel.

Cambia i comandi di scelta dal menu a discesa in Tutti i comandi. Seleziona Sviluppatoredal menu a sinistra e seleziona il pulsante Aggiungiper spostarlo nel riquadro a destra. Seleziona la casella di controllo per abilitarlo e seleziona OKper terminare.

Quando si apre la finestra Editor codice, assicurati che il foglio in cui si trovano i tuoi dati sia selezionato nel riquadro a sinistra. Seleziona Foglio di lavoronel menu a discesa a sinistra e Attivaa destra. Ciò creerà una nuova subroutine chiamata Worksheet_Activate ().

Questa funzione verrà eseguita ogni volta che viene aperto il file di foglio di calcolo. Incolla il codice nel riquadro dello script all'interno di questa subroutine.

Questo script funzionerà attraverso le 12 righe e caricherà il nome rappresentante dalla colonna 3, l'articolo dalla colonna 4 e la vendita totale dalla colonna 7.

Una volta terminati entrambi i loop For, 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 e 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 in 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 il 5% per l'importo dell'imposta.

il foglio risultante sarà simile a questo.

Come puoi vedere, gli array VBA in Excel sono estremamente utili e versatili come qualsiasi altro trucco di Excel.

L'esempio sopra è un uso molto semplice per un array. Puoi creare array molto più grandi ed eseguire ordinamento, calcolo della media o molte altre funzioni rispetto ai dati che memorizzi in essi.

Se vuoi ottenere una vera creatività, puoi persino creare due array contenente un intervallo di celle da due fogli diversi ed esegui calcoli tra elementi di ciascun array.

Le applicazioni sono limitate solo dalla tua immaginazione.

Post correlati:


18.01.2020