调用双数组函数

时间:2014-11-20 23:22:33

标签: arrays vba function

我有一个关于我的函数的问题,以返回双数组中的最大数字。 这是我当前的代码看起来像

Function return_largest()
last_row = Range("A1").End(xlDown).Row 
Dim array_1()
ReDim array_1(last_row - 2, 5)    

For i = 0 To last_row - 2

    array_1(i, 0) = Range("A" & i + 2)
    array_1(i, 1) = Range("B" & i + 2)
    array_1(i, 2) = Range("C" & i + 2)
    array_1(i, 3) = Range("D" & i + 2)
    array_1(i, 4) = Range("E" & i + 2)

Next

MsgBox Application.WorksheetFunction.Max(array_1)

End Function

此功能适用于5x5阵列。如果我希望将其作为可用于维数(i,k)的函数,我应该如何更改此代码?

换句话说,我怎样才能编写一个函数来找到一个数组的最大元素,该元素可以在子过程中为大小(x,y)的数组调用(子过程中数组的维度是多少),以及该子程序的语法是什么?

1 个答案:

答案 0 :(得分:1)

如果您从工作表中调用此内容并且未通过该范围,Excel将看不到依赖项,并且在范围更改时不会重新计算。

Function return_largest(r As Range) As Double
  return_largest = WorksheetFunction.Max(r.Value2)
End Function

然后你可以使用动态或静态范围来调用它:

= return_largest(A1:K5)