将数据从一个表复制/插入到另一个表
问题描述:
我的目标是从table1复制数据并将其插入到表2中。 我试过如下:将数据从一个表复制/插入到另一个表
Sub Integration()
Dim tbl1 As Range
Dim tbl2 As Range
Application.ScreenUpdating = False
Set tbl1 = ActiveSheet.ListObjects("Table1").DataBodyRange
Set tbl2 = ActiveSheet.ListObjects("Table2").DataBodyRange
tbl1.Copy
tbl2.Insert Shift:=xlDown
Application.CutCopyMode = False
tbl1.ClearContents
Application.ScreenUpdating = True
End Sub
,而不是复制表1,并将其插入到表2但是,它似乎复制表2,ClearContent,并与表1
事情的数据插入到本身它可以在另一张纸上完美运行,并且完全相同的代码。
任何帮助,将不胜感激。由于
Pre-Integration
After integration
答
使用tbl2.Offset(tbl2.Rows.Count)
表2后引用第一个空行。接下来使用tbl1.Copy tbl1.Copy tbl2.Offset(tbl2.Rows.Count)
粘贴Table1的内容。
Sub Integration()
Dim tbl1 As Range
Dim tbl2 As Range
Application.ScreenUpdating = False
Set tbl1 = ActiveSheet.ListObjects("Table1").DataBodyRange
Set tbl2 = ActiveSheet.ListObjects("Table2").DataBodyRange
tbl1.Copy tbl2.Offset(tbl2.Rows.Count)
Application.CutCopyMode = False
tbl1.ClearContents
Application.ScreenUpdating = True
End Sub
答
或者与列表工作对象自己来分配数据:
Sub Integration()
Dim tbl1 As ListObject, tbl2 As ListObject
Set tbl1 = ActiveSheet.ListObjects("Table1")
Set tbl2 = ActiveSheet.ListObjects("Table2")
For i = 1 To tbl1.ListRows.Count
tbl2.ListRows.Add 1, True
tbl2.ListRows(1).Range.Value = tbl1.ListRows(i).Range.Value
Next i
End Sub
当你手动点击与选定的多行插入,插入擅长的行这个数字,VBA将这样做。当你做tbl2.insert时,你插入的行数与当前在tbl2中的行数相同,而不是你想插入的行数与你在tbl1中的行数一致 –
对不起,但我真的不明白你的意思...什么时候我做tbl2.insert Shift:= xlDown,它实际上是将表的1个复制的单元格插入到表2中,不是吗?它应该与CTRL + SHIFT + 1相当,因为您不能通过右键单击将复制的单元格插入到表中。 –
我的意思是你在这里做的是复制1行,然后选择5行并插入,所以你有效地插入5个重复的行。下面的两个答案都避免了这种情况,虽然Thomas'避免了循环,这是更可取的 –