Arrays vba中如何从数组中获取一维向量
有人知道如何从VBA中的一列数组中获取实向量吗? 我已经完成了以下步骤:Arrays vba中如何从数组中获取一维向量,arrays,excel,vba,Arrays,Excel,Vba,有人知道如何从VBA中的一列数组中获取实向量吗? 我已经完成了以下步骤: '' read one column from 2D array Dim ixy() ixy = Application.Index(ts.Vertices, , 1) 一切看起来都很好,直到我想重新划分向量并在末尾添加一个值: ReDim Preserve ixy(LBound(ixy) To UBound(ixy) + 1, 1 To 1) ixy(UBound(ixy)) = ts.Vertices(1, 1)
'' read one column from 2D array
Dim ixy()
ixy = Application.Index(ts.Vertices, , 1)
一切看起来都很好,直到我想重新划分向量并在末尾添加一个值:
ReDim Preserve ixy(LBound(ixy) To UBound(ixy) + 1, 1 To 1)
ixy(UBound(ixy)) = ts.Vertices(1, 1)
这根本不起作用,因为我无法重新定义数组的非最后一个维度。那么,如何通过从数组中读取列来获得向量呢?在局部变量窗口中,变量ixy
看起来像+:ixy::Variant(1到32,1到1)
,所以它不是1d数组
我知道如何在循环中遵循这一点,但我只想用最少的代码找到清晰的解决方案。有什么建议吗?来自备注部分:
如果将Row_num或Column_num设置为0(零),INDEX将分别返回整列或整行的值数组
或
我想要的是
转置。第一个ixy=Application.Index(ts.Vertices,1)
保持不变,只需对其进行转置。多么简单的解决方案ixy=Application.Transpose(ixy)
非常感谢您的建议!我去掉了参数,但如果我没记错的话,Transpose返回2D数组,而Index(,0)1D数组对于我来说,第一个带零的解决方案不起作用。但第二个很好。我使用Excel 2016,64位,如果需要的话。ixy=Application.Transpose(ixy)
可以工作,因为ixy=Application.Transpose(ts.Vertices)
可以转换整个2d数组。第一个应该保持不变:ixy=Application.Index(ts.Vertices,1)
(不带零)
ixy = Application.Index(ts.Vertices, 0, 1)
ixy = Application.Transpose(ts.Vertices)