【问题标题】:Calling a Double Array Function调用双精度数组函数
【发布时间】:2014-11-20 23:22:32
【问题描述】:

我有一个关于返回双精度数组中最大数字的函数的问题。 这就是我当前的代码的样子

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) 的数组调用(无论子过程中的数组具有什么维度),以及该子过程的语法是什么?

【问题讨论】:

  • 要将范围转换为数组,例如使用array_1 = Range("A1").Resize(100,5).Value。无需先使用ReDim函数初始化。

标签: arrays vba function


【解决方案1】:

如果您从工作表中调用它并且没有传递范围,Excel 将看不到任何依赖关系,并且在范围更改时不会重新计算。

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

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

=return_largest(A1:K5)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-07
    • 2016-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-27
    相关资源
    最近更新 更多