如何在VBA函数中使用数组?

时间:2016-04-29 22:21:08

标签: arrays vba function

我需要执行公共函数,该函数从某个数组获取值并为每个x计算f(x)函数,其中f(x)= x ^ 3 + 1 / 5x +2。 this is what I am doing but doesnt work

1 个答案:

答案 0 :(得分:2)

Jeeped的评论是代码出现故障的一个非常可能的原因,除非您的代码窗格顶部有Option Base 1。因此,要么您拥有/放置该声明,要么将ReDim语句更改为ReDim B(1 To nrows, 1 To ncols) As Double

此外,您必须反转Next INext j

最后我建议你:

  • Longinteger变量使用nrows变量类型而不是i,如果您处理的datarange超过32767行。并为ncolsj采用相同的类型以简化

  • A使用“简单”(非数组)双变量,因为您只需要作为临时“x”值来计算相应的“y”值并将后者仅存储在B中( )数组,最终由你的函数返回。

所以它可能是:

Function functionvalue(datarange)

Dim nrows As Long, ncols As Long
Dim i As Long, j As Long

Dim A As Double, B() As Double

nrows = datarange.Rows.Count
ncols = datarange.Columns.Count

ReDim B(1 To nrows, 1 To ncols) As Double

For i = 1 To nrows
    For j = 1 To ncols
        A = datarange.Cells(i, j)
        B(i, j) = A ^ 3 + A * 1 / 5 + 2
    Next j
Next i

functionvalue = B

End Function