范围适用于公式但不适用于自定义函数

Range works in formula but not in custom function

我在公式中有一个范围并且有效:

=MAX(LN(A2:A7))

现在我想将这个公式重建为自定义函数,但它不起作用。

Function testy(xr As Range)
    n = WorksheetFunction.Max(WorksheetFunction.Ln(xr))
    testy = n   
End Function

它抛出一个错误:错误的数据类型。但是我定义了“As Range”? 为什么它不起作用,我该如何纠正它?

使用Application.Ln.

问题是 WorksheetFunction.Ln 接受 Double 作为其参数。您隐式地将多单元格范围的 .Value 传递给它,这是一个 Variant 数组。

使用后期绑定 Application.Ln,可以传递一个数组(并返回一个数组):

Function testy(ByVal xr As Range) As Double
    testy = WorksheetFunction.Max(Application.Ln(xr))
End Function