自定义用户函数 (UDF) 和动态范围

Custom User Function (UDF) and Dynamic Ranges

我有一个 return 数组的自定义用户函数 (UDF)。我在大量单元格的数组公式中使用它。
returned 数组的长度取决于函数参数。 这很好用,除了一件事:当 returned 数组的长度小于为数组公式定义的范围时,"out-of-range" 条目都设置为 #N/A

有没有办法在自定义用户函数中获取数组公式范围(因此,如果需要,我可以准备一个更大的数组 return),或者 return 一些一种不受大小限制的迭代器(而不是数组),并且在超出范围的情况下会 return ""?

这是一个非常愚蠢的例子......一个 UDF 到 return 第一个 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,余额将填满空白。