[英]One dimensional array into two dimensional array VBA
嘿,如何将具有 x 元素的一维数组转换为具有 x/2 元素的二维数组? 这是我的代码:
Function std_norm(N, num_of_sim)
Randomize
Dim norm() As Double
randoms = N * num_of_sim - 1
ReDim norm(randoms)
For i = 0 To randoms
rand = Rnd
If rand = 0 Then rand = Rnd
norm(i) = Application.NormSInv(rand)
Next i
mean = WorksheetFunction.Average(norm)
std = WorksheetFunction.StDev(norm)
For i = 0 To randoms
norm(i) = (norm(i) - mean) / std
Next i
ReDim Preserve norm(num_of_sim - 1, N - 1)
std_norm = norm
End Function
如果我采用N=2
和num_of_sim=3
那么我的数组norm
有 6 个元素。 然后我尝试做大小为(N-1,num_of_sim-1)
二维数组。
为什么我得到错误subscript out of range
?
如果使用 Preserve 关键字,则只能调整最后一个数组维度的大小,而根本无法更改维度数。
https://learn.microsoft.com/en-us/office/vba/language/reference/user-interface-help/redim-statement
您所做的是创建一维数组(0 到 5):
ReDim norm(randoms)
然后你想把它转换成二维数组(1 到 2、1 到 1):
ReDim Preserve norm(num_of_sim - 1, N - 1)
我不知道你想要实现什么,但很可能你需要创建新的数组变量,你将按照你想要的方式(二维)调整大小,并用第一个数组中的值填充它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.