创建VBA函数返回数组
在VBA中创建用户定义的函数”。因此,不浪费时间,让我们开始学习本教程。
什么是数组函数?
数组函数是在使用时返回数组的函数。这些函数与CTRL + SHIFT + ENTER组合键一起使用,这就是为什么我们更喜欢将数组函数或公式称为CSE函数和公式。
excel数组函数通常是多单元格数组公式。一个例子是“ link:/ mathematical-functions-excel-transpose-function [TRANSPOSE function]”。
在VBA中创建UDF数组函数
因此,场景是我只想使用函数ThreeEven()函数返回前三个偶数。
该代码将如下所示。
Function ThreeEven() As Integer() 'define array Dim numbers(2) As Integer 'Assign values to array numbers(0) = 0 numbers(1) = 2 numbers(2) = 4 'return values ThreeEven = numbers End Function
让我们在工作表上使用此功能。
You can see that, we first select three cells (horizontally, for vertical we have to use two-dimensional array. We have it covered below.). Then we start writing our formula. Then we hit CTRL+SHIFT+ENTER. This fills the selected cells with the array values.
注意:
-
实际上,您将不知道需要多少个单元格。在这种情况下,请始终选择比预期的数组长度更多的单元格。该函数将用数组填充单元格,多余的单元格将显示#N / A错误。
-
默认情况下,此数组函数返回水平数组中的值。
如果您尝试选择垂直单元格,则所有单元格将仅显示数组的第一个值。
如何运作?
要创建数组函数,您必须遵循以下语法。
Function functionName(variables) As returnType() dim resultArray(length) as dataType 'Assign values to array here functionName =resultArray End Function
函数声明必须如上定义。这声明它是一个数组函数。
在工作表上使用它时,必须使用CTRL + SHIFT + ENTER组合键。否则,它将仅返回数组的第一个值。
VBA数组函数返回垂直数组
要使您的UDF数组函数垂直工作,您不需要做很多事情。只需将数组声明为二维数组即可。然后在第一个维度中添加值,而将另一个维度留空。这是您的操作方式:
Function ThreeEven() As Integer() 'define array Dim numbers(2,0) As Integer 'Assign values to array numbers(0,0) = 0 numbers(1,0) = 2 numbers(2,0) = 4 'return values ThreeEven = numbers End Function
这就是您在工作表上使用它的方式。
===
UDF Array Function with Arguments in Excel* In the above examples, we simply printed sum static values on the sheet.
假设我们希望我们的函数接受一个范围参数,对它们执行一些操作,然后返回结果数组。
示例将“ -done”添加到
范围内的每个值现在,我知道这很容易完成,但只是向您展示如何使用用户定义的VBA阵列函数来解决问题。
因此,在这里,我想要一个数组函数,该函数将范围作为参数并将“ -done”添加到范围中的每个值。使用`link:/ tips-concatenate-formula-in-microsoft-excel [concatenation function]`可以很容易地做到这一点,但是我们将在这里使用数组函数。
Function CONCATDone(rng As Range) As Variant() Dim resulArr() As Variant 'Create a collection Dim col As New Collection 'Adding values to collection On Error Resume Next For Each v In rng col.Add v Next On Error GoTo 0 'completing operation on each value and adding them to Array ReDim resulArr(col.Count - 1, 0) For i = 0 To col.Count - 1 resulArr(i, 0) = col(i + 1) & "-done" Next CONCATDone = resulArr End Function
说明:
上面的函数将接受范围作为参数,并将“ -done”添加到范围中的每个值。
您可以看到我们在这里使用了VBA集合来保存数组的值,然后对每个值进行了操作并将它们添加回二维数组中。
是的,这是您如何创建可返回数组的自定义VBA数组函数的方法。我希望这是可以解释的。如果您对本文有任何疑问,请将其放在下面的评论部分。
单击下面的链接下载工作文件:
`link:/wp-content-uploads-2019-12-Create-VBA-Function-to-Return-Array-1.xls [____创建VBA函数以返回数组]
相关文章:
如何通过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实现功能]] ||了解如何从用户定义的函数
返回错误值。 ===热门文章:
link:/ vlookup-functions的公式和函数介绍[Excel中的VLOOKUP函数]