image

在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

让我们在工作表上使用此功能。

imageYou 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

这就是您在工作表上使用它的方式。

===

imageUDF 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集合来保存数组的值,然后对每个值进行了操作并将它们添加回二维数组中。

image

是的,这是您如何创建可返回数组的自定义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函数]