在本文中,我们将创建一个用户定义函数(UDF)或自定义函数,以在定义的范围内添加唯一值。

本文的原始数据由七个不同样本中的随机数组成。

ArrowRawData

添加另一列以查找每一行中值的总和。

ArrowTotal

“总计”列显示每行中的数字总和。

现在,添加另一列以查找每一行中唯一数字的总和。我们创建了一个用户定义函数“ AddDistinctValues”来查找唯一数字的总和。在单元格I11中添加公式= AddDistinctValues(A11:G11)并将公式拖动到其他行。

UDF“ AddDistinctValues”将给出定义范围内唯一数字的总和。在下图中,您可以轻松地看到总和与唯一数字之和之间的差异。

ArrowUniqueNoSum

逻辑解释

UDF“ AddDistinctValues”将范围对象作为输入。它在输入范围内累加唯一编号。

为了找到输入范围内的唯一数字,我们使用了集合对象。我们知道集合不能存储重复的值,所以当我们在集合的输入范围内插入数字时,重复的数字将不会重新插入到集合中,而是会产生错误。

为了处理错误,我们使用了“ On Error Resume Next”语句。

该语句不会在遇到错误时停止功能,而是Loop会移至下一条语句。

一旦我们在集合中拥有唯一编号,就可以将它们添加到数组中。

请遵循以下代码

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

如果您喜欢此博客,请在Facebook和Facebook上与您的朋友分享。

我们很希望收到您的来信,请让我们知道我们如何才能改善我们的工作并使您的工作更好。写信给我们[email protected]