如何将一个Excel表(ListObject)中的多行追加到另一行?

use*_*875 5 excel vba listobject

我有两个表:

    Table_1         Table_2
   A   B   C       A   B   C
 -------------   -------------
1| A1| B1| C1|  1| A2| B2| C2|
2| A1| B1| C1|  2| A2| B2| C2|
3| A1| B1| C1|  3| A2| B2| C2|
Run Code Online (Sandbox Code Playgroud)

结果表:

    Table_1   
   A   B   C  
 -------------
1| A1| B1| C1|
2| A1| B1| C1|
3| A1| B1| C1|
4| A2| B2| C2|
5| A2| B2| C2|
6| A2| B2| C2|
Run Code Online (Sandbox Code Playgroud)

Table_2是一个临时表(ListObject),它使用数据连接在数据库中查询条目。

Table_1是一个表(ListObject),用作条目的集合列表。之所以将其分开,是因为(1)缩短了Table_2中的查询时间,并且(2)进行了一些程序编辑。

我有VBA代码,可将Table_2复制到Table_1,然后更新Table_2的连接字符串,以不包括日期在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
Run Code Online (Sandbox Code Playgroud)

如果Table_2(新条目)只有十几个条目,则此方法非常有用。有时,Table_2会有数百个条目,这实际上需要20分钟才能完成。我怀疑这是因为我正在执行.Copy和.Paste的数百次迭代。

有没有办法批发:复制Table_2的全部,然后使其成为Table_1的一部分?我觉得我想做的事情只需要1秒钟即可以编程方式执行,而不是20分钟。我没有条件或例外。我想要Table_2中的所有内容,这应该使它变得容易。我可能会以错误的方式进行操作。任何帮助表示赞赏。谢谢。

Ron*_*eld 5

也许是这样,适当地改变工作表:

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
Run Code Online (Sandbox Code Playgroud)


Ana*_*com 1

尝试使用 SQL union 语句进行快速表连接 (ODBC):

SELECT * FROM [Sheet1$] UNION SELECT * FROM [Sheet2$]
Run Code Online (Sandbox Code Playgroud)

其中表 1 位于名为“Sheet1”的工作表上,表 2 位于名为“Sheet2”的工作表上。

通过转到“数据->来自其他来源->来自 Microsoft Query”来执行此操作