如何将多个行从一个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将剪切选项插入到目标表中
  • 删除你不想要的最后一行