Añadir valores únicos utilizando VBA en Microsoft Excel
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.
Agregue otra columna para encontrar la suma de valores en cada fila.
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.
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]