2017-05-26 32 views
0

我想写一个非常简单的UDF,它将接受一个输入范围并返回另一个范围。输出范围中的每个单元应等于输入范围细胞加1。这是我有转换一个范围,并从UDF返回它

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。然后我转到工作表中,选择一组单元格(输出范围“A2:C2”),然后输入Addone(A1:C1)并按Ctrl + Shift + Enter。然而,输出单元填充了#VALUE

我已检查其他答案herehere,但无法使其适用于我的情况。任何帮助表示赞赏。

回答

2

您不能将输出定义为范围,并且在单元格 必须将输出类型更改为双数组的情况下对其进行评估。 Inside函数定义一个临时数组,重新定义其大小基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