我想从2D数组创建一个1D数组而不使用仅一行代码来循环,例如:

newvec = oldvec(:,3)


在MATLAB中会从“ oldvec”的第3列创建一维数组“ newvec”。我的搜索告诉我在VBA中执行此操作的唯一方法是循环。例如:

redim newvec(ubound(oldvec,1))
    for i = 1 to ubound(oldvec,1)
    newvec(i) = oldvec(i,3)
next i


是否有一个内置构造可用于剥离现有2D阵列的整个奇异尺寸以构建新的1D阵列?

最佳答案

与大多数常见的编程语言不同,VBA中没有为此目的提供内置功能。但是,有一种使用Index函数的解决方法:

Application.Index(MultidimArray, Row_Number, Column_Number)



要从源数组中提取列,应将“ 0”作为
row_number参数。同样,要从源数组中提取一行,
应将“ 0”作为column_number参数传递。


因此,如果要从“ oldvec”的第三列创建一维数组“ newvec”:

newvec = Application.Index(oldvec, 0, 3)


Here您可以找到更多。

编辑:

使用For loop比使用Index function快得多。因此,您最好坚持使用for loop。有关详细信息,请参见评论。

10-06 07:34