我想从 2D 数组创建 1D 数组,而无需仅使用 1 行代码进行循环,例如:
newvec = oldvec(:,3)
在 MATLAB 中,它将从“oldvec”的第三列创建一个一维数组“newvec”。我的搜索告诉我,在 VBA 中执行此操作的唯一方法是循环。例如:
redim newvec(ubound(oldvec,1))
for i = 1 to ubound(oldvec,1)
newvec(i) = oldvec(i,3)
next i
是否有内置构造可以剥离现有二维数组的整个奇异维度以构建新的一维数组?
与大多数常见编程语言不同,VBA 中没有用于此目的的内置函数。但是有一个使用 Index 函数的解决方法:
Application.Index(MultidimArray, Row_Number, Column_Number)
要从源数组中提取列,应将“0”传递为
row_number 参数。类似地,要从源数组中提取一行,
‘0’应该作为column_number参数传递。
因此,如果您想从“oldvec”的第三列创建一个一维数组“newvec”:
newvec = Application.Index(oldvec, 0, 3)
Here https://usefulgyaan.wordpress.com/2013/06/12/vba-trick-of-the-week-slicing-an-array-without-loop-application-index/你可以找到更多。
Edit:
Using For loop
比使用快很多Index function
。所以你最好坚持for loop
。详情请参阅评论。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)