繁体   English   中英

一维数组转化为二维数组 VBA

[英]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=2num_of_sim=3那么我的数组norm有 6 个元素。 然后我尝试做大小为(N-1,num_of_sim-1)二维数组。

为什么我得到错误subscript out of range


您的错误是由于更改数组的维度 -> 从 1 维数组调整为 2 维的结果。 根据 Microsoft 的文档:

如果使用 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM