En este artículo, crearemos una función definida por el usuario (UDF) o una función personalizada para agregar valores únicos en un rango definido.

Los datos brutos de este artículo consisten en números aleatorios en siete muestras diferentes.

ArrowRawData

Agregue otra columna para encontrar la suma de valores en cada fila.

ArrowTotal

La columna «Suma total» muestra la suma de números en cada fila.

Ahora, agregue otra columna para encontrar la suma de números únicos en cada fila. Hemos creado una función definida por el usuario «AddDistinctValues» para encontrar la suma de números únicos. Agregue fórmula = AddDistinctValues ​​(A11: G11) en la celda I11 y arrastre la fórmula a otras filas.

UDF «AddDistinctValues» dará la suma de números únicos en el rango definido. En la imagen de abajo, se puede ver fácilmente la diferencia entre la suma total y la suma de números únicos.

ArrowUniqueNoSum

Explicación lógica

UDF «AddDistinctValues» toma el objeto de rango como entrada. Suma números únicos en el rango de entrada.

Para encontrar números únicos en el rango de entrada, hemos utilizado objeto de colección. Como sabemos que la colección no puede almacenar valores duplicados, cuando insertamos números en el rango de entrada en la colección, los números duplicados no se volverán a insertar en la colección, sino que se generará un error.

Para manejar el error, hemos utilizado la instrucción «On Error Resume Next».

Esta declaración no detendrá la función al encontrar el error, sino que Loop pasará a la siguiente declaración.

Una vez que tenemos los números únicos en la colección, podemos agregarlos en una matriz.

Siga a continuación el código

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

Si te gustó este blog, compártelo con tus amigos en Facebook y Facebook.

Nos encantaría saber de usted, háganos saber cómo podemos mejorar nuestro trabajo y hacerlo mejor para usted. Escríbanos a [email protected]