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.

ArrowRawData

Aggiungi un’altra colonna per trovare la somma dei valori in ogni riga.

ArrowTotal

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.

ArrowUniqueNoSum

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]