【发布时间】:2017-09-15 16:22:31
【问题描述】:
大家好,我正在尝试使用 VBA 将来自网络的数据转储合并到 Excel 中的一个数据表中。 数据转储的结构如附图所示:
- 4 个标题栏
- 3 个表,所有表都具有相同的标题
- 每个表之间都有几行空间。
我正在尝试做的事情:
- 将表头从第一个表复制到工作表 2
- 复制工作表 2 标题行下第一个表中的数据
- 将第二个表(不是标题行)中的数据复制到第一个表下的工作表 2
- 将第三个表(不是标题行)中的数据复制到第一个和第二个表下的工作表 2 中。
我卡在上面的#6 上。
For I = 2 To wb2.Sheets.Count
Sheets(I).Activate
Set OI1 = Range("A3:AM" & Range("A3").End(xlDown).Row)
OI1.Select
OI1Count = Selection.Rows.Count + 4
OI1.Copy Sheets("All Outstanding Invoices").Range("A" &
Rows.Count).End(xlUp).Offset(1, 0)
Set OI1 = Nothing
Sheets(I).Activate
Set OI2 = Range("A3").Offset(OI1Count, 0)
OI2.Select
我想从第一个选定的表中偏移第一个表的大小 + 空行数,然后创建一个新范围来选择我的第二个表。但我不知道该怎么做。
Set OI2 = Range("A3").Offset(OI1Count, 0)
OI2.Select
我需要的是类似的东西
Set OI2 = Range("A3:AM").Offset(OI1Count,0)
OI2.End(xlDown).Row
但这不起作用,我错过了什么?
【问题讨论】:
-
创建实际的数据表(VBA 中的列表对象)使您能够使用结构化引用,这将使代码更清晰:)
-
感谢您的反馈。对 VBA 来说是全新的:$ 到目前为止我创建的都是来自一些 Google Fu。你能指导我一些资源吗:)
-
现在我又读了一遍,数据转储总是以这种格式出现吗?是复制粘贴吗?还是你手动放置?还是通过代码来实现?
-
这是一个网站的 excel 摘录。数据格式总是这样(不知道为什么要这样设计)。为您提供一些背景信息,第一个表格显示延迟 >7 天的发票,第二个表格显示延迟