Aggiungere valori unici che utilizzano VBA in Microsoft Excel
In questo articolo creeremo una funzione definita dall’utente (UDF) o una funzione personalizzata per aggiungere valori univoci in un intervallo definito.
I dati grezzi per questo articolo sono costituiti da numeri casuali in sette diversi campioni.
Aggiungi un’altra colonna per trovare la somma dei valori in ogni riga.
La colonna “Total Sum” mostra la somma dei numeri in ogni riga.
Ora aggiungi un’altra colonna per trovare la somma dei soli numeri univoci in ogni riga. Abbiamo creato una funzione definita dall’utente “AddDistinctValues” per trovare la somma di numeri univoci. Aggiungi formula = AddDistinctValues (A11: G11) nella cella I11 e trascina la formula su altre righe.
UDF “AddDistinctValues” fornirà la somma di numeri univoci nell’intervallo definito. Nell’immagine sottostante, si può facilmente vedere la differenza tra la somma totale e la somma di numeri univoci.
Spiegazione logica
UDF “AddDistinctValues” accetta l’oggetto intervallo come input. Aggiunge numeri univoci nell’intervallo di input.
Per trovare numeri univoci nell’intervallo di input, abbiamo utilizzato l’oggetto collection. Come sappiamo la raccolta non può memorizzare valori duplicati, quando inseriamo numeri nell’intervallo di input nella raccolta, i numeri duplicati non verranno reinseriti nella raccolta, ma verrà generato un errore.
Per la gestione dell’errore, abbiamo utilizzato l’istruzione “On Error Resume Next”.
Questa istruzione non interromperà la funzione quando si verifica l’errore, invece Loop passerà all’istruzione successiva.
Una volta che abbiamo i numeri univoci nella raccolta, possiamo aggiungerli in array.
Segui sotto per il codice
Function AddDistinctValues(InputRange As Range) As Integer 'Declaring variables Dim Rng As Range Dim UniqueValues As New Collection Dim UniqueValue As Variant 'Recalculates the function whenever calculation occur in any other cell Application.Volatile On Error Resume Next 'Adding unique values to collection from input range For Each Rng In InputRange UniqueValues.Add Rng.Value, CStr(Rng.Value) Next On Error GoTo 0 AddDistinctValues = 0 'Adding values in the collection For Each UniqueValue In UniqueValues AddDistinctValues = AddDistinctValues + UniqueValue Next End Function
Se ti è piaciuto questo blog, condividilo con i tuoi amici su Facebook e Facebook.
Ci piacerebbe sentire la tua opinione, facci sapere come possiamo migliorare il nostro lavoro e renderlo migliore per te. Scrivici a [email protected]