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中的所有内容,这应该使它变得容易。我可能会以错误的方式进行操作。任何帮助表示赞赏。谢谢。
也许是这样,适当地改变工作表:
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)
尝试使用 SQL union 语句进行快速表连接 (ODBC):
SELECT * FROM [Sheet1$] UNION SELECT * FROM [Sheet2$]
Run Code Online (Sandbox Code Playgroud)
其中表 1 位于名为“Sheet1”的工作表上,表 2 位于名为“Sheet2”的工作表上。
通过转到“数据->来自其他来源->来自 Microsoft Query”来执行此操作
| 归档时间: |
|
| 查看次数: |
6354 次 |
| 最近记录: |