如何将多个行从一个Excel表(ListObject)附加到另一个?
我有两个表格:
Table_1 Table_2 ABCABC ------------- ------------- 1| A1| B1| C1| 1| A2| B2| C2| 2| A1| B1| C1| 2| A2| B2| C2| 3| A1| B1| C1| 3| A2| B2| C2|
结果表格:
Table_1 ABC ------------- 1| A1| B1| C1| 2| A1| B1| C1| 3| A1| B1| C1| 4| A2| B2| C2| 5| A2| B2| C2| 6| A2| B2| C2|
Table_2是一个临时表(ListObject),它使用数据连接向数据库查询条目。
Table_1是充当条目集合列表的表(ListObject)。 由于它(1)缩短了表2中的查询时间,并且(2)具有一些编程性的编辑,所以被保持分离。
我有将Table_2复制到Table_1的VBA代码,然后更新Table_2的连接string以使其不包含date在Table_1范围内的条目。 结果是Table_2只会提取新的数据。
我的代码(正确)将Table_2中的数据复制到Table_1:
For Each temprow in Table_2.ListRows Set newRow = table_1.ListRows.Add tempRow.Range.Copy newRow.Range.PasteSpecial xlPasteValues Next
如果Table_2(新条目)只有十几个条目,这很好用。 偶尔,Table_2将会有几百个条目,这将需要花费20分钟才能完成。 我怀疑这是因为我做了几百次.Copy和.Paste迭代。
有没有办法我可以做批发:复制表2的所有,只是使其成为表1的一部分? 我觉得我想要做的只需要1秒钟以编程方式执行,而不是20分钟。 我没有条件或例外。 我想从Table_2中获得所有的东西,这很容易。 我可能会以错误的方式去做。 任何帮助表示赞赏。 谢谢。
也许这个,适当地改变工作表:
Option Explicit Sub CombineTables() Dim LO1 As ListObject, LO2 As ListObject With Sheet3 Set LO1 = .ListObjects("Table_1") Set LO2 = .ListObjects("Table_2") End With LO2.DataBodyRange.Copy Destination:= _ LO1.DataBodyRange.Offset(LO1.DataBodyRange.Rows.Count).Resize(1, 1) End Sub
尝试使用SQL联合语句快速表join(ODBC):
SELECT * FROM [Sheet1$] UNION SELECT * FROM [Sheet2$]
其中表1在名为“Sheet1”的工作表上和在“Sheet2”上的表2中。
通过转到“数据 – >从其他来源 – >从Microsoft Query”
复制源表格和特殊粘贴值+在温度范围内格式化
- 削减温度范围
- 将最后一行添加到目标表
- select最后一行
- 使用Shift:= xlDown将剪切选项插入到目标表中
- 删除你不想要的最后一行