【发布时间】:2019-05-07 10:38:27
【问题描述】:
我正在确定具有 92 行和不同列范围(1-64 列)的矩阵的值。根据行号,我的代码应该定义该行列数的上限。我正在使用嵌套循环,但我的代码给了我一个 92x64 的矩阵(所以列数是恒定的)。
Dim m As Integer
Dim n As Integer
Dim o As Integer
Dim p As Integer
Dim q As Integer
Dim N_bay As Single
Dim N_b As Single
Dim D_r As Single
Dim s As Single
Dim Con_l As Single
Dim tau_s As Single
Dim N_r As Single
D_r = 394.9
s = 4.24
Con_l = 6.1
N_r = 92
N_b = 64
For n = LBound(N_rj, 1) To UBound(N_rj, 1)
For m = LBound(N_rj, 2) To UBound(N_rj, 2)
N_rj(n, 1) = n
N_rj(n, 2) = (D_r - ((n - 1) * s))
N_rj(n, 3) = WorksheetFunction.RoundDown(((D_r - ((n - 1) * s)) / Con_l), 0)
N_rj(n, 4) = 1 / (N_rj(n, 3))
size = N_rj(n, 3)
ReDim N_bz(1 To 92, 1 To size)
For o = 1 To UBound(N_bz, 1)
For p = 1 To UBound(N_bz, 2)
N_bz(o, p) = p * Con_l
Cells(o + 1, p + 6).Value = N_bz(o, p)
Next p
Next o
Cells(n + 1, m).Value = N_rj(n, m)
Next m
Next n
我希望得到一个有 92 行的矩阵,其中每行有不同数量的列。因此,第 1 行有 64 列,第 2 行有 63 列,依此类推。
【问题讨论】:
-
使用一维数组并将不同大小的数组分配给该数组的每个元素。
-
N_rj是在哪里定义的? -
另外,您的
o和p循环似乎一遍又一遍地覆盖相同的值而没有做任何事情。这是非常迭代的,并且回写到单元的次数必须永远花费。我建议您重新编写,以便每个n循环只回写一次。Next o之后的一个为N_bz,Next n之后的一个为N_rj -
Dim N_rj(1 To 92, 1 To 4) As Single Dim N_bz() As Single Dim size As Integer
-
您能解释一下
N_bz是什么以及它的预期输出应该是什么?目前我怀疑您正在创建一个2D数组,然后尝试将其写回单行
标签: excel vba multidimensional-array dynamic