我想从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
。有关详细信息,请参见评论。