如何能把多张工作表内容快速复制到一张表.docx

上传人:b****2 文档编号:1343560 上传时间:2022-10-21 格式:DOCX 页数:19 大小:50.83KB
下载 相关 举报
如何能把多张工作表内容快速复制到一张表.docx_第1页
第1页 / 共19页
如何能把多张工作表内容快速复制到一张表.docx_第2页
第2页 / 共19页
如何能把多张工作表内容快速复制到一张表.docx_第3页
第3页 / 共19页
如何能把多张工作表内容快速复制到一张表.docx_第4页
第4页 / 共19页
如何能把多张工作表内容快速复制到一张表.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

如何能把多张工作表内容快速复制到一张表.docx

《如何能把多张工作表内容快速复制到一张表.docx》由会员分享,可在线阅读,更多相关《如何能把多张工作表内容快速复制到一张表.docx(19页珍藏版)》请在冰豆网上搜索。

如何能把多张工作表内容快速复制到一张表.docx

如何能把多张工作表内容快速复制到一张表

如何把多工作表容快速复制到一表

我有一份教师工资表,一个工作簿里有好多工作表的,现在我想把各工作表里的容全部合到一表中,除了用复制粘贴的方法外,请问还能有什么好的方法快速合到一起吗?

(首选)

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")

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 人力资源管理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1