我需要执行公共函数,该函数从某个数组获取值并为每个x计算f(x)函数,其中f(x)= x ^ 3 + 1 / 5x +2。 this is what I am doing but doesnt work
答案 0 :(得分:2)
Jeeped的评论是代码出现故障的一个非常可能的原因,除非您的代码窗格顶部有Option Base 1
。因此,要么您拥有/放置该声明,要么将ReDim
语句更改为ReDim B(1 To nrows, 1 To ncols) As Double
此外,您必须反转Next I
和Next j
最后我建议你:
对Long
和integer
变量使用nrows
变量类型而不是i
,如果您处理的datarange
超过32767行。并为ncols
和j
采用相同的类型以简化
对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