从 UDF 转换范围并return它
Transform a range and return it from a UDF
我正在尝试编写一个非常简单的 UDF,它将接受一个输入范围和 return 另一个范围。输出范围的每个单元格应等于输入范围单元格加 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"),然后输入 Addone(A1:C1)
并按 Ctrl + Shift + Enter。但是,输出单元格中填充了 #VALUE
。
我检查了其他答案 here and here,但无法使它适用于我的情况。感谢任何帮助。
您不能将输出定义为范围并在单元格中对其求值
必须将输出类型更改为双数组。内部函数定义一个临时数组,重新定义其大小基础 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
我正在尝试编写一个非常简单的 UDF,它将接受一个输入范围和 return 另一个范围。输出范围的每个单元格应等于输入范围单元格加 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"),然后输入 Addone(A1:C1)
并按 Ctrl + Shift + Enter。但是,输出单元格中填充了 #VALUE
。
我检查了其他答案 here and here,但无法使它适用于我的情况。感谢任何帮助。
您不能将输出定义为范围并在单元格中对其求值 必须将输出类型更改为双数组。内部函数定义一个临时数组,重新定义其大小基础 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