转换范围并从UDF返回

我正在尝试编写一个非常简单的UDF,它将使用一个input范围并返回另一个范围。 输出范围的每个单元格应该等于input范围单元格加1.这是我所拥有的

Public Function Addone(rng As Range) As Range Dim i As Integer, N As Integer N = rng.Count For i = 1 To N Addone.cells(1,i) = rng.cells(1,i) + 1 Next i End Function 

假定范围“A1:C1”包含数字1,2,3。 然后进入工作表,select一个单元格范围(输出范围“A2:C2”),然后inputAddone(A1:C1)并按下Ctrl + Shift + Enter。 然而,输出单元格填充了#VALUE

我在这里和这里查了其他的答案,但不能使它适用于我的情况。 任何帮助表示赞赏。

您不能将输出定义为范围,并且在单元中评估它必须将输出types更改为双数组。 里面的函数定义一个临时数组,重新定义它的大小基础N,然后分配给返回数组。 以下应该做的。 让我知道如果这个解决。

 Public Function Addone2(rng As Range) As Double() Dim temp() As Double Dim i As Integer, N As Integer N = rng.Count ReDim temp(1 To N) As Double For i = 1 To N temp(i) = rng.Cells(1, i) + 1 Next i Addone2 = temp End Function