将excel电子表格合并为一个电子表格



好吧,我试着寻找类似的问题,但由于这是我第一次查看Excel的VBA编辑器,所以我对所讨论的内容不太了解。

简单来说,我有两个电子表格:"Sheet1"one_answers"Sheet2">

表1:

A         B
1 Header1   Header2
2 Text1     Info1
3 Text2     Info2

表2:

A         B
1 Header1   Header2
2 Text3     Info3
3 Text4     Info4

我想要一个宏来将两张纸合并到一张新的纸(Sheet3)中,如下所示:

A         B
1 Header1   Header2
2 Text1     Info1
3 Text2     Info2
4 Text3     Info3
5 Text4     Info4

我试着录制了一个宏并将其保存以备以后使用。为此,我创建了一张新的工作表,复制/粘贴从第1张到第3张的所有内容,然后将除标题外的所有信息从第2张复制到第3页。

这个宏适用于这些数据,但我发现excel生成的代码使它在粘贴数据之前选择了单元格A4(这里)。虽然这适用于这些数据,但如果每张工作表中的记录数不时发生变化,则不会起作用。基本上,

1) 我想知道是否有一个函数可以在粘贴下一组数据之前自动转到最后一个相关的单元格(在本例中是单元格A4,如果我还有一个表,那么是单元格A6)。

2) 我看到了函数"ActiveCell.SpecialCells(xlLastCell).Select"(当我使用Ctrl+End时激活),但它把我带到了表单的末尾。在使用该功能后,我需要类似于"主页"one_answers"向下"箭头键的东西才能使其发挥最佳效果。

这些选项中的任何一个都适合我。^_^

以下是我在Excel2010:中从宏记录器中录制的当前VBA代码

Sub Collate_Sheets()
Sheets.Add After:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Select
Sheets(Sheets.Count).Name = "Sheet3"
Sheets("Sheet1").Select
Range("A1").Select
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
Selection.Copy
Sheets("Sheet3").Select
ActiveSheet.Paste
ActiveCell.SpecialCells(xlLastCell).Select
' I need to select one cell below, and the cell in column A at this point
Sheets("Sheet2").Select
Range("A2").Select
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Sheet3").Select
ActiveSheet.Paste
End Sub

我希望我没有忘记任何有用的信息。如果我这样做了,请告诉我!

Jerry,试试这个代码。我稍微清理了一下你的代码,使它能够更高效地执行你想要的操作。我已经根据你的代码做了一些假设,我认为这些假设是正确的。如果没有,请评论这个答案,如果需要,我会调整。

Option Explicit
Sub Collate_Sheets()

Sheets.Add After:=Sheets(Sheets.Count)
Dim wks As Worksheet
Set wks = Sheets(Sheets.Count)
wks.Name = "Sheet3"
With Sheets("Sheet1")
Dim lastrow As Long
lastrow = .Range("B" & .Rows.Count).End(xlUp).Row
.Range("A1:B" & lastrow).Copy wks.Range("A" & wks.Rows.Count).End(xlUp)
End With
With Sheets("Sheet2")
lastrow = .Range("B" & .Rows.Count).End(xlUp).Row
.Range("A2:B" & lastrow).Copy wks.Range("A" & wks.Rows.Count).End(xlUp).Offset(1)
End With

End Sub

如果有人想在创建Shee3之前删除它以避免错误

'Delete Sheet 3
Application.DisplayAlerts = False
Sheets("Sheet3").Delete

谢谢Scott Holtzman!!

相关内容