将excel电子表格合并到一个电子表格中

好吧,我试图寻找类似的问题,但是我不明白正在讨论什么,因为这是我第一次看Excel的VBA编辑器。

简单来说,我有2个电子表格:“Sheet1”和“Sheet2”

第1页:

AB 1 Header1 Header2 2 Text1 Info1 3 Text2 Info2 

第2页:

  AB 1 Header1 Header2 2 Text3 Info3 3 Text4 Info4 

我想有一个macros将两张纸合并成一张新纸(Sheet3),如下所示:

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

我试图录制一个macros并保存以备后用。 为此,我创build了一个新工作表,将所有从Sheet1复制/粘贴到Sheet3,然后将除Sheet2之外的所有信息复制到Sheet3。

那么,这个macros的工作原理是这个数据,但是我发现由excel生成的代码使得它在粘贴数据之前select了单元格A4(这里)。 虽然这适用于这些数据,但是如果每张表中的logging数量一次又一次地改变,那么这种方法就无法工作。 基本上,

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

2)我看到了function“ActiveCell.SpecialCells(xlLastCell)。select”(当我使用CTRL +结束时激活),但带我到工作表的末尾。 使用该function后,我需要类似于“Home”和“Down”箭头键的function。

这些select中的任何一个对我都会很好。 ^ _ ^

这是我在Excel 2010中从macroslogging器logging的当前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 

我希望我没有忘记任何有用的信息。 让我知道,如果我做到了!

杰里,试试这个代码。 我清理了一下你的代码,使它能够更有效地执行你想要的function。 我已经根据你的代码说了一些我认为是正确的假设。 如果没有,评论这个答案,我会调整,如果需要的话。

 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 

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

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

感谢斯科特Holtzman!