我有一个返回数组的自定义用户函数(UDF)。我在一系列单元格的数组公式中使用它
返回数组的长度取决于函数参数。
除了一件事之外,这很有用:当返回数组的长度小于为数组公式定义的范围时,“超出范围”条目都设置为#N/A
。
有没有办法在自定义用户函数中获取数组公式范围(因此,如果需要,我可以准备一个更大的数组返回),或者返回某种迭代器(而不是数组)它的大小不受限制,如果超出范围会返回""
吗?
答案 0 :(得分:1)
这是一个非常愚蠢的例子......一个UDF以列形式返回第一个 7 素数:
Public Function Primes()
'
' Array UDF to return the first 7 primes
'
Dim rN As Long, ary(1 To 7) As Long
Dim tdim As Long, i As Long
Dim wf As WorksheetFunction
Set wf = Application.WorksheetFunction
rN = Application.Caller.Rows.Count
tdim = wf.Max(rN, 7)
ReDim bry(1 To tdim, 1 To 1)
ary(1) = 1
ary(2) = 3
ary(3) = 5
ary(4) = 7
ary(5) = 11
ary(6) = 13
ary(7) = 17
For i = 1 To 7
bry(i, 1) = ary(i)
Next i
If tdim > 7 Then
For i = 8 To tdim
bry(i, 1) = ""
Next i
End If
Primes = bry
End Function
UDF会检测它必须填充多少个单元格,如果该值超过 7 ,则余额将填充空白。