如何能把多张工作表内容快速复制到一张表.docx
《如何能把多张工作表内容快速复制到一张表.docx》由会员分享,可在线阅读,更多相关《如何能把多张工作表内容快速复制到一张表.docx(19页珍藏版)》请在冰豆网上搜索。
如何能把多张工作表内容快速复制到一张表
如何把多工作表容快速复制到一表
我有一份教师工资表,一个工作簿里有好多工作表的,现在我想把各工作表里的容全部合到一表中,除了用复制粘贴的方法外,请问还能有什么好的方法快速合到一起吗?
(首选)
SubyyO'声明过程名称为yy\当要芦明一个过程时,通常是以关键字“sub”开头,并且以关键字"END"结束,在SUB关键字之前是用来指定此过程的作用域,例如publicstatic或protected等.在SUB关键字之后为过程最重要的三大部分:
过程名称、参数以及在SUB和ENDSUB之间的主体程序代码容・过程是可以执行的语句序列单元,所有可执行的代码必须包含在某个过程中,任何过程都不能嵌套在其它过程中,过程的名称必须在模块级别进行走义。
Sheets«Addafter:
=Sheets(Sheets.Count)'新建一个工作表放在最后。
夢数值和参数名之间应该使用”:
二”符号,而不是等号。
在代码中,属性和方法都是通过连接符丫来和对象连接的。
Add是方法名,after是目变重,方法名与目变重之间用半角空格隔开.
Fori=1ToSheetsXount・:
T从第一个工作表到倒数第二个工作表
WithSheets(i)rwith语句可以在一个单一对象或一个用户定义类型上执行一系列的语句.使用with语句不仅可以简化程序代码,而且可以提高代码的运行效率.With/endwith语句结构中以T开头的语句相当于引用了with语句中指定的对叙当程序一旦进入with/endwith结构,with语句指定的对象就不能改变・因此不能用with语句来设置多个不同的对象。
n=・[c65536]・End(xlUp)・Row‘求出c列最大行号.求出某列最大行号的目的是确定有数据区域的最下边界,为此,选择求最大行号列时,选择的列数据最下边界要最大限度包含所有的数据。
End和Row都是属性,此语句取得属性值后賦值给变重n.此程序事先没有对变量进行声明。
在程序中取得对象的属性的代码结构:
变量二对象属性.
・Range("a2:
V"&n)・Copy
ActiveSheet.[c65536].End(xlUp).Offset(l,-2)'取a2开始到最后的数据copy到新表数据的下一行。
n=.[c65536].End(xlUp).Row得到C列最后一个非空单元格所在的行号f\Offset(l,-2Y偏移“[c65536]・End(xlUp)“得到单元格的位蚩开始复制后数据的粘贴位置。
由C列移到A列.[c65536].End(xlUp):
求出C列最下边有数据的单元格,粘贴复制的数据时为了前面的数据不被后面粘贴上的数据覆盖,开始粘贴数据的位善在最下边有数据的单元格位置的基础上要用offset偏移。
EndWith
Next
EndSubr注:
在visualbasic中要加入注释,直接在注釋文字前加上,符号即可,在'符号之后的文字会被编译器忽略,也可以使用REM来进行注释,但使用’符号会更快捷一些,还可以节省存及力论编译的效率。
以上代码粘贴位置、复制围可以根据实际需要可变。
2010年5月用于林业旱灾调查一个工作簿上的所有工作表汇
总到一工作表的代码:
SubyyO'声明过程名称为"yy".当要声明一个过程时,通常是以关键字"sub”开头,井且以关键字-END"结束,在SUB关键字之前是用来指定此过程的作用域,例如publiqstatic,或protected等。
在SUB关键字之后为过程最重要的三大部分:
过程名称、参数以及在SUB和ENDSUB之间的主体程序代码容.过程是可以执行的语句序列单元,所有可执行的代码必须包含在某个过程中,田可过程都不能嵌套在其它过程中f过程的名称必须在模块级别进行定义。
Sheets.Addafter:
=Sheets(Sheets.Count)'新建一个工作表放在
最后。
参数值和参数名之间应该使用”:
「符号,而不是等号。
在代码中■厲性和方法都是通过连接符…来和对象连接的。
Add是方法名.after是目变量,方法名与目变重之间用半角空格隔开。
Fori=1ToSheets.Count・1'从第f工作表到倒妳二个工作表
WithSheets(i)"with语句可以在一个单一对象或一个用户定义类型上执行一系列的语句。
使用with语句不仅可以简化程序代码,而且可以提高代码的运行效率。
With/endwith语句结构中以T开头的语句相当于引用了with语句中指定的对象。
当程序一旦进入with/endwith结构,with语句指定的对象就不能改变。
因此不能用with语句来设置多个不同的对象。
性,此语句取得属性值后赋值给变量n。
此程序事先没有对变量进行声明。
在程序中取得对象的属性的代码结构:
变量二对象・属性。
n)・Copy
ActiveSheet.[a65536]>End(xlUp).Offset(l,0)'取a2开始到确的数据copy到新表数据的下一行.n=.[c65536].End(xlUp).Row得到C列最后f非空单元格所在的行号f•・Offset(l厂2)・偏移•[c65536]・End(xlUp)“得到单元格的位置开始复制后数据的粘贴位置。
由C列移到A列.
EndWith
Next
EndSub
注:
在VISUALBASIC中要加入注釋,直接在注釋文字前加上’符号即可.在’符号之后的文字会被绸译器忽略f也可以使用REM来进行注釋,但使用’符号会更快捷一些f还可以节省存及加快编译的效率。
如果当前活动工作表的A列填写的是学生的,现在我们想在表中A列最后一个学生的后面增加一个叫〃青"的学生,则代码为:
代码:
ActiveSheet.Cells([A65536].End(xlUp).Row+lrl).Value=青"
w[A65536].End(xlUp).RowM语句来返回A列的最后一个非空单元格的行号
Sheetl.range("ClB).End(xlDown).Row返回第一次遇到空单元格前的单元格的数臺。
(注:
当C列有空白单元格时用:
myEndRow=sheetsCsheetln).rangeCC65536").End(xlUp).row)
本示例选定包含单元格B4的区域中B列顶端的单元格。
Range("B4n).End(xlUp).Select
Range「b65536二)・End(x_up)・ROWs
M咄昴磬加MkdJT冈老
Range?
65536・).End(x_up).ROW
Range(=b65536=).End(xcp).ROW
Range(nd65536・).End(x_up).ROW
Range(=k65536・).End(x_up).ROW
哪—Tvba-B-ENDs誌罟w告KSJ。
EndBs
鄭画目迪『引鱼並携回—->Rang®訂购、冈SS冈
轴画4d3}滿End+回Jz隣End+ET隣End+EfttBaEnd+回m滿。
Rangea鮒、expression.End(Direction)expression翥。
対训并見覇回=同理4|=『_」训-&3^^2—。
DirectionX-Direciion秣腔、录»。
耳烟^咎因讲回。
X-Direction凹涉X-Direction
X-Down
x-TORighix_TOLeft
xlUp
示例
本示例选走包含单元格B4的区域中B列顶端的单元格。
Range("B4").End(xlUp).Select
本示例选走包含单元格B4的区域中第4行尾端的单元格。
Range("B4").End(xlToRight).Select
本示例将选定区域从单元格B4延伸至第四行最后一个包含数据的单元格。
Worksheets(nSheetl").Activate
Range(,,B4M/Range("B4").End(xlToRight)).Select
Range("a65536").End(xlUp).RowA列数据区域最后一行的行号
Range("b65536").End(xlUp).RowB列数据区域最后一行的行号
Range(Hd65536H).End(xlUp).RowD列数据区域最后一行的行号
区域最后一行的行号
Range("k65536-).End(xlUp).RowK列娄
Range("a65536").End(xlUp).Row
A列第65536行之上的最后有数据的单元格所在行数
Range("b65536").End(xlUp).Row=B列最后一个非空单元格的行数
Range("a65536").End(xlUp).Row=A列最后一个非空单元格的行数
Range("b65536").End(xlUp).Row=B列最后一个非空单元格的行数
Range("d65536").End(xlUp).Row=D列最后一个非空单元格的行数
Range("k65536").End(xlUp).Row=K列最后一个非空单元格的行数
if».end(xlUp).row的含义?
经常在VBA中常见如下代码:
DimRngAsInteger
Rng=sheetsl.Range
代码详解
走义RNG作为一个整型变臺
'第二行的"sheetsl"这种写法是错误的•正确的表述方法应为"sheetl"或"sheets⑴"
sheets对工作表对象的称呼;
range("a65536"脂一个range对象,具体指第一列最后一行;
END,range对象的END属性也返回一个对象我理解为基于上述对象的延伸至最后一个
RANGE对象•具体延伸的方向要看它给出的参数上匕如xlToLeft、xlToRight.xlUp或xlDowno
ROW返回区域中第一块的第一行的行号。
Long类型,只读
多两位高手指点,看完以后我是这样理解的,不知对否?
Range(・A65536・).End(xlUp).Row是指第一列最后一个有数据单元格的行数,它的下—行即加1就是3楼所说的要添加数据的空白单元格
汇总工作表数据
2010-06-0300:
44
方法一:
SubGetdata()
DimErowAsInteger,cAsVariant,SerowAsInteger
Erow二Sheets("Totar).[a65536].End(xlUp).Row+1
IfErow>4ThenSheets("Totar).Rows("4:
"&Erow).CIearContents
ForEachcInThisWorkbook.Sheets
Ifc.Name<>"Total"Then
Serow二c.[a65536].End(xlUp).Row
Erow=Sheets("Totar).[a65536].End(xlUp).Row+1
c.Range("a4:
l"&Serow).CopyDestination:
二Sheets("Total").Range("a"&
Erow)
EndIf
Nextc
EndSub
方法二
SubSQLConbimeO
Range("A4:
L65536,,).CIearContents
DimiRowAsInteger,sqlTempAsString,sqlAsString
Setn二CreateObject("adodb.connection")