如何把多张工作表内容快速复制到一张表
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
如何把多张工作表内容快速复制到一张表
我有一份教师工资表,一个工作簿里有好多张工作表的,现在我想把各工作表里的内容全部合到一张表中,除了用复制粘贴的方法外,请问还能有什么好的方法快速合到一起吗?
(首选)
S ub yy() ’声明过程名称为“yy”。当要声明一个过程时,通常是以关键字“SUB”开头,并且以关键字“END”结束,在SUB关键字之前是用来指定此过程的作用域,例如public,static, 或protected 等。在SUB关键字之后为过程最重要的三大部分:过程名称、参数以及在SUB和END SUB之间的主体程序代码内容。过程是可以执行的语句序列单元,所有可执行的代码必须包含在某个过程中,任何过程都不能嵌套在其它过程中,过程的名称必须在模块级别进行定义。
Sheets.Add after:=Sheets(Sheets.Count)'新建一个工作表放在最后。参数值和参数名之间应该使用“:=”符号,而不是等号。在代码中,属性和方法都是通过连接符“.”来和对象连接的。Add是方法名,after是自变量,方法名与自变量之间用半角空格隔开。
For i = 1 To Sheets.Count - 1'从第一个工作表到倒数第二个工作表
With Sheets(i)’with语句可以在一个单一对象或一个用户定义类型上执行一系列的语句。使用with语句不仅可以简化程序代码,而且可以提高代码的运行效率。 With/end with语句结构中以“.”开头的语句相当于引用了with语句中指定的对象。当程序一旦进入with/end with结构,with 语句指定的对象就不能改变。因此不能用with语句来设置多个不同的对象。
n = .[c65536].End(xlUp).Row'求出c列最大行号。求出某列最大行号的目的是确定有数据区域的最下边界,为此,选择求最大行号列时,选择的列数据最下边界要最大限度包含所有的数据。End和Row都是属性,此语句取得属性值后赋值给变量n。此程序事先没有对变量进行声明。在程序中取得对象的属性的代码结构:变量=对象·属性。
.Range("a2:V"&n).Copy
ActiveSheet.[c65536].End(xlUp).Offset(1, -2)'取a2开始到最后的数据copy到新表数据的下一行。n =.[c65536].End(xlUp) .Row得到C列最后一个非空单元格所在的行号,“.Offset(1, -2)”偏移“[c65536].End(xlUp)”得到单元格的位置开始复制后数据的粘贴位置。由C 列移到A列。[c65536].End(xlUp):求出C列最下边有数据的单元格,粘贴复制的数据时为了前面的数据不被后面粘贴上的数据覆盖,开始粘贴数据的位置在最下边有数据的单元格位置的基础上要用offset 偏移。
End With
Next
End Sub’注:在VISUAL BASIC中要加入注释,直接在注释文字前加上’符号即可,在’符号之后的文字会被编译器忽略,也可以使用REM来进行注释,但使用’符号会更快捷一些,还可以节省内存及加快编译的效率。以上代码粘贴位置、复制范围可以根据实际需要可变。
2010年5月用于林业旱灾调查一个工作簿上的所有工作表汇总到一张工作表的代码:
Sub yy() '声明过程名称为"yy"。当要声明一个过程时,通常是以关键字"SUB"开头,并且
以关键字"END"结束,在SUB关键字之前是用来指定此过程的作用域,例如public,static, 或protected 等。在SUB关键字之后为过程最重要的三大部分:过程名称、参数以及在SUB和END SUB之间的主体程序代码内容。过程是可以执行的语句序列单元,所有可执行的代码必须包含在某个过程中,任何过程都不能嵌套在其它过程中,过程的名称必须在模块级别进行定义。
Sheets.Add after:=Sheets(Sheets.Count) '新建一个工作表放在最后。参数值和参数名之间应该使用":="符号,而不是等号。在代码中,属性和方法都是通过连接符"."来和对象连接的。Add是方法名,after是自变量,方法名与自变量之间用半角空格隔开。
For i = 1 To Sheets.Count - 1 '从第一个工作表到倒数第二个工作表
With Sheets(i) 'with语句可以在一个单一对象或一个用户定义类型上执行一系列的语句。使用with语句不仅可以简化程序代码,而且可以提高代码的运行效率。 With/end with语句结构中以"."开头的语句相当于引用了with语句中指定的对象。当程序一旦进入with/end with结构,with 语句指定的对象就不能改变。因此不能用with语句来设置多个不同的对象。
n = .[a65536].End(xlUp).Row '分别求出最大行号。 End和Row都是属性,此语句取得属性值后赋值给变量n。此程序事先没有对变量进行声明。在程序中取得对象的属性的代码结构:变量=对象·属性。
.Range("a3:v" & n).Copy ActiveSheet.[a65536].End(xlUp).Offset(1, 0) '取a2开始到最后的数据
copy到新表数据的下一行。n =.[c65536].End(xlUp) .Row得到C列最后一个非空单元格所在的行号,".Offset(1, -2)"偏移"[c65536].End(xlUp)"得到单元格的位置开始复制后数据的粘贴位置。由C列移到A列。
End With
Next
End Sub
注:在VISUAL BASIC中要加入注释,直接在注释文字前加上’符号即可,在’符号之后的文字会被编译器忽略,也可以使用REM来进行注释,但使用’符号会更快捷一些,还可以节省内存及加快编译的效率。
如果当前活动工作表的A列填写的是学生的姓名,现在我们想在表中A列最后一个学生的后面增加一个叫“张青”的学生,则代码为:
代码:
ActiveSheet.Cells([A65536].End(xlUp).Row + 1, 1).Value = "张青"
“[A65536].End(xlUp).Row”语句来返回A列的最后一个非空单元格的行号
Sheet1.range("C1").End(xlDown).Row返回第一次遇到空单元格前的单元格的数量。(注:当C列有空白单元格时用:
myEndRow=sheets("sheet1").range("C65536").End(xlUp).row)
[a65536].End(xlUp) 取得A列最后一个数据的位置
本示例选定包含单元格 B4 的区域中 B 列顶端的单元格。
Range("B4").End(xlUp).Select
Range("b65536").End(xlUp).Row 问题
高手赐教其含义与区别
Range("a65536").End(xlUp).Row
Range("b65536").End(xlUp).Row
Range("d65536").End(xlUp).Row
Range("k65536").End(xlUp).Row
看一下vba中END的帮助就知道了。
End 属性
参阅应用于示例特性返回一个 Range 对象,该对象代表包含源区域的区域尾端的单元格。等同于按键 End+ 向上键、End+ 向下键、End+ 向左键或 End+ 向右键。Range 对象,只读。