VBA实战技巧29:从一个工作表复制数据到另一个工作表
今天演示一个简单的例子,也是经常看到网友问的问题,将一个工作表中的数据复制到另一个工作表。
如下图1所示,有3个工作表,需要将工作表“新数据#1”和“新数据#2”中的数据复制到工作表“汇总”中。其中,在“汇总”工作表中已经有部分数据。
![](http://n4.ikafan.com/assetsj/blank.gif)
图1
工作表“新数据#1”中的数据如下图2所示。
![](http://n4.ikafan.com/assetsj/blank.gif)
图2
工作表“新数据#2”中的数据如下图3所示。
![](http://n4.ikafan.com/assetsj/blank.gif)
图3
按Alt+F11组合键,打开VBE,插入一个标准模块,输入如下代码:
Sub Copy_Data()
Sheets('新数据#1').Select
Range('A4').Select
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, Selection.End(xlToRight)).Select
Selection.Copy
Sheets('汇总').Select
Range('A3').Select
Selection.End(xlDown).Select
ActiveCell.Offset(1, 0).Range('A1').Select
ActiveSheet.Paste
Sheets('新数据#2').Select
Range('A4').Select
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, Selection.End(xlToRight)).Select
Application.CutCopyMode = False
Selection.Copy
Sheets('汇总').Select
Range('A3').Select
Selection.End(xlDown).Select
ActiveCell.Offset(1, 0).Range('A1').Select
ActiveSheet.Paste
Range('A3').Select
End Sub
代码中:
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, Selection.End(xlToRight)).Select
表示从所选单元格开始,向下至该列数据末尾,向右至行数据末尾的区域。
Selection.End(xlDown).Select
ActiveCell.Offset(1,0).Range('A1').Select
表示选择最后一行数据之后的空行中的第1个单元格。
这段代码很直观,基本上根据三个工作表的特点,采用了“硬编码”,可以根据具体工作表的情况对上述代码进行修改。当然,也可以优化代码,使其具有通用性。
运行代码后,结果如下图4所示。
![](http://n4.ikafan.com/assetsj/blank.gif)
图4