image

提取Excel中的唯一值。在之前的文章中,我们学习了如何使用不同的excel函数组合从范围中提取唯一值。尽管它们工作出色,但它们也很复杂,无可否认。如果您经常提取唯一值,那么这些公式可能会让您感到厌倦。它们也使文件沉重而缓慢。

因此,在本文中,我们将学习如何创建一个用户定义的函数,该函数将范围作为参数并仅返回该范围内的唯一值。您可以将代码直接复制到文件中并立即开始使用。

唯一功能的VBA代码:

Function UNIQUES(rng As Range) As Variant()

Dim list As New Collection

Dim Ulist() As Variant

'Adding each value of rng to the collection.

On Error Resume Next

For Each Value In rng

'here value and key are the same. The collection does not allow duplicate keys hence only unique values will remain.

list.Add CStr(Value), CStr(Value)

Next

On Error GoTo 0

'Defining the length of the array to the number of unique values. Since the array starts from 0, we subtract 1.

ReDim Ulist(list.Count - 1, 0)

'Adding unique value to the array.

For i = 0 To list.Count - 1

Ulist(i, 0) = list(i + 1)

Next

'Printing the array

UNIQUES = Ulist

End Function

将代码复制到Excel的VB编辑器中。

使用UNIQUE函数

用户定义的多单元数组函数”。这意味着您必须选择要打印唯一列表的范围,然后编写公式并按CTRL + SHIFT + ENTER组合键。

在上面的gif文件中,我们有一个国家/地区列表。现在列表上有很多重复的国家。我们只想获取唯一国家列表。

为此,选择一个范围,在其中需要唯一列表。现在写这个公式:

=UNIQUES(A2:B7)

按下CTRL + SHIFT + ENTER键组合。完成了。所有唯一值都在选定范围内列出。

注意:* 如果您选择的范围大于唯一值,那么它们将显示#N / A错误。您可以将其用作结束唯一值的指示。如果您在列表末尾没有看到#N / A,则表示可能还有更多唯一值。

代码说明

我在此UD函数中使用了VBA的两个主要概念。

和`link:/ custom-functions-in-vba-create-vba-function-return-array [User Defined Array Function]”。首先,我们使用一个集合从提供的范围中获取唯一值。

for Each Value In rng

list.Add CStr(Value), CStr(Value) Next

next

由于无法在工作表上打印集合,因此将其转移到另一个数组UList。

for i = 0 To list.Count - 1

Ulist(i, 0) = list(i + 1) Next

next

注意:* VBA数组索引从0开始,集合索引从1开始。这就是为什么我们在for循环中为数组减去1并为列表集合的索引添加1的原因。

最后,我们将该数组打印到工作表上。

有一个执行相同功能的excel 2016不可使用的UNIQUE函数。该功能在Excel 2019中可用。只有内部人员程序的成员才能访问该功能。通过使用此技术,您可以在办公室里炫耀自己,领先于MS。

好的,这就是您如何创建简单地提取唯一值的函数的方法。我希望我的解释足以使您理解这一点。如果您对此问题或其他任何与excel VBA有关的问题有任何特定的问题,请在下面的评论部分中提出。

单击下面的链接下载工作文件:

相关文章:

创建VBA函数以返回数组了解如何创建返回数组的用户定义数组函数。

`link:/ excel-array-formulas-arrays-in-excel-formula [Excel Formul中的数组] ||了解excel中的数组。

如何通过VBA创建用户定义的函数 ||了解如何在Excellink:/ custom-functions-userdefined-functions-from-other-workbooks-using-vba-in-microsoft-excel中创建用户定义的函数[使用另一个工作簿中的用户定义函数(UDF)使用Microsoft Excel中的VBA]在另一个Excel工作簿中使用用户定义的函数link:/ custom-functions-return-error-values-from-user-defined-functions-using-vba-in-microsoft-excel [返回用户定义的错误值在Microsoft Excel中使用VBA实现功能]] ||了解如何从用户定义的函数

返回错误值。