我读过一些帖子,说在VBA中只能reDim
多维数组的最后一个维。
对于这种情况有什么变通办法吗?
Sub test()
Dim arr As Variant
Dim i As Long
Dim j As Long
For i = 1 To 10
For j = 1 To 10
ReDim Preserve arr(1 To i, 1 To j)
arr(i, j) = i
Next j
Next i
End Sub
对于电子表格,二维数组的第一维是行,第二维是列。
需要向我们正在处理的数据中添加一行或一列,这难道不是一种非常常见的情况吗?
再解释一下:
我的项目需要加载像10个工作簿,每个工作簿有一个未知的数据行未知的工作表数量。
我试图加载所有的文件,把它们放到一个二维数组中,因为它们共享相同的结构,根据它们来自哪个文档和工作表,在每行前面添加一些列。
这就是为什么我必须重新调暗两个维度。
2条答案
按热度按时间kkbh8khc1#
为简单起见,下面的代码只组合了活动工作簿中每个工作表的数据。但是,可以修改该代码以包含其他工作簿。
该代码循环遍历活动工作簿中的每个工作表。对于每个工作表,它循环遍历除标题行之外的每一行。对于每一行,首先将数据传输到一个数组,然后添加到一个集合。然后将集合中的组合数据传输到另一个数组。最后,将数组的内容传输到新创建的工作表。
同样,为了简单起见,我假设每个工作表的数据只包含两列,所以我将
currentRow()
声明为1-Row by 4-Column
数组,前两列存储工作表数据,第三和第四列存储相应的工作簿名称和工作表名称,您需要相应地更改第二维。xj3cbfub2#
堆栈范围
A1
开始,数据为表格格式(一行标题,没有空行或空列),并且数据范围至少有两个单元格。