Excel VBA工作表数组UDF返回标量?

Excel VBA工作表数组UDF返回标量?,excel,vba,user-defined-functions,dynamic-arrays,worksheet-function,Excel,Vba,User Defined Functions,Dynamic Arrays,Worksheet Function,我可以使用CTRL-ALT-enter输入任何内置的标量Excel工作表函数,并获得数组结果。在引擎盖下,这些函数是否设计用于返回阵列?或者它是一个标量函数,为输入数组中的每个元素重复调用,为每个元素返回标量 我想编写一个UDF,它返回一个标量,但可以由使用CTRL-ALT-ENTER的范围数组调用 Public Function MyScalar(MyInput As Double) As Double Application.Volatile MySc

我可以使用CTRL-ALT-enter输入任何内置的标量Excel工作表函数,并获得数组结果。在引擎盖下,这些函数是否设计用于返回阵列?或者它是一个标量函数,为输入数组中的每个元素重复调用,为每个元素返回标量

我想编写一个UDF,它返回一个标量,但可以由使用CTRL-ALT-ENTER的范围数组调用

Public Function MyScalar(MyInput As Double) As Double
          Application.Volatile
          MyScalar = MyInput * 2
End Function

我见过的唯一的例子是返回一个数组,而不是一个标量。返回数组是唯一的方法吗?

如果您可以在任何标量函数的顶部添加一个标记,以便VBA将其视为数组函数EG
ArrayFunction
,类似于
Application.Volatile
。在后台,VBA将为每个输入单元重复调用标量。一个潜在的缺点是,设计用于处理数组的函数可能会提供比标量重复调用更好的性能。可能对c.f.的进一步读数和@johnywhy感兴趣