收藏 分销(赏)

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

上传人:w****g 文档编号:4016770 上传时间:2024-07-25 格式:DOC 页数:21 大小:78.54KB
下载 相关 举报
如何把多张工作表内容快速复制到一张表.doc_第1页
第1页 / 共21页
如何把多张工作表内容快速复制到一张表.doc_第2页
第2页 / 共21页
点击查看更多>>
资源描述
如何把多张工作表内容快速复制到一张表 我有一份教师工资表,一个工作簿里有好多张工作表的,现在我想把各工作表里的内容全部合到一张表中,除了用复制粘贴的方法外,请问还能有什么好的方法快速合到一起吗? (首选) 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 = 。[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)。RowRange("b65536”)。End(xlUp).RowRange("d65536”)。End(xlUp)。RowRange(”k65536”)。End(xlUp).Row 看一下vba中END的帮助就知道了. End 属性 参阅应用于示例特性返回一个 Range 对象,该对象代表包含源区域的区域尾端的单元格。等同于按键 End+ 向上键、End+ 向下键、End+ 向左键或 End+ 向右键。Range 对象,只读。 expression.End(Direction) expression 必需。 该表达式返回“应用于"列表中的对象之一。 Direction XlDirection 类型,必需。所要移动的方向。 XlDirection 可为 XlDirection 常量之一。 xlDown xlToRight xlToLeft xlUp 示例 本示例选定包含单元格 B4 的区域中 B 列顶端的单元格。 Range("B4").End(xlUp).Select 本示例选定包含单元格 B4 的区域中第 4 行尾端的单元格。 Range(”B4”).End(xlToRight)。Select 本示例将选定区域从单元格 B4 延伸至第四行最后一个包含数据的单元格。 Worksheets("Sheet1").Activate Range(”B4", Range("B4”)。End(xlToRight)).Select Range(”a65536").End(xlUp)。RowA列数据区域最后一行的行号 Range("b65536").End(xlUp).RowB列数据区域最后一行的行号 Range(”d65536”)。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列最后一个非空单元格的行数 请教.end(xlUp)。row的含义? 经常在VBA中常见如下代码: Dim Rng As Integer Rng = sheets1。Range 代码详解 定义RNG作为一个整型变量 ’第二行的”sheets1"这种写法是错误的.正确的表述方法应为”sheet1”或”sheets(1)" sheet1,对工作表对象的称呼; range(”a65536”)指一个range对象,具体指第一列最后一行; END,range对象的END属性,也返回一个对象,我理解为基于上述对象的延伸至最后一个RANGE对象。具体延伸的方向要看它给出的参数。比如xlToLeft、xlToRight、xlUp 或 xlDown. ROW返回区域中第一块的第一行的行号.Long 类型,只读 多谢两位高手指点,看完以后我是这样理解的,不知对否?       Range("A65536”).End(xlUp)。Row 是指第一列最后一个有数据单元格的行数,它的下一行即加 1 就是3楼所说的要添加数据的空白单元格 汇总工作表数据 2010—06—03 00:44 方法一: Sub Getdata() Dim Erow As Integer, c As Variant, Serow As Integer Erow = Sheets(”Total").[a65536].End(xlUp).Row + 1 If Erow 〉 4 Then Sheets(”Total”).Rows(”4:” & Erow)。ClearContents For Each c In ThisWorkbook。Sheets If c。Name 〈〉 "Total” Then Serow = c。[a65536]。End(xlUp)。Row Erow = Sheets(”Total”)。[a65536].End(xlUp)。Row + 1 c.Range("a4:l" & Serow)。Copy Destination:=Sheets(”Total").Range(”a” & Erow) End If Next c End Sub 方法二 Sub SQLConbime() Range("A4:L65536")。ClearContents Dim iRow As Integer, sqlTemp As String, sql As String Set cnn = CreateObject(”adodb。connection") cnn.Open "provider=microsoft。jet.oledb.4.0;extended properties=excel 8.0;data source=” & ThisWorkbook。FullName For Each sh In Sheets If sh。Name <〉 "理数” Then iRow = sh.Range(”a3").End(xlDown)。Row sqlTemp = ”select * from [” & sh。Name & ”$A3:L" & iRow & ”] order by 班别,座号 " sql = sqlTemp & "union " & sql End If Next sql = Left(sql, Len(sql) - 6) Sheets(”理数")。Range(”a4”).CopyFromRecordset cnn。Execute(sql) cnn。Close: Set cnn = Nothing End Sub 方法三 Sub ConbimeAll() Dim yy As Long yy = [a65536].End(xlUp)。Row + 1 Range("a2:l" & yy)。ClearContents Set conn = CreateObject("adodb.connection") For i = 1 To 4 conn。Open "provider=microsoft.jet.oledb。4.0;extended properties=excel 8.0;data source=” & ThisWorkbook。FullName Sq2 = ”select * from [” & Range(”p" & i) & ”$a3:l1000] " [a65536]。End(xlUp)。Offset(1, 0).CopyFromRecordset conn.Execute(Sq2) conn.Close Next i Set conn = Nothing End Sub 把工作簿中的200多张表复制到一张工作表里?(首选) 我是做收款工作的, 每天收款情况做一张表格, 现在快一年了,今天老板突然要我把这9个月积累的每日数据全部反映到一张工作表上, 其实点复制粘贴200多张表不是大问题,主要是怕中途看花了眼,漏了或者重复了就很麻烦, 请教高手帮忙,用公式或者VBA,小弟感激不尽。 右键点击新工作表标签,选择“查看代码”,将下面的代码粘贴到打开的VBE窗口中: Sub Shcopy() Dim nRow&, R1%, Rs%, Ls%'&:长整数型;%:整数型。 R1 = 2'每页从第2行开始复制(可修改) Application。EnableEvents = False’如果对指定对象启用事件,则该值为 True.Boolean 类型,可读写 Application。ScreenUpdating = False For i = 2 To Sheets。Count'sheets。count最后一张工作表。 With Sheets(i) Rs = 。UsedRange。Rows。Count + 1 - R1’对于 Worksheet 对象,Rows 属性返回代表指定工作表所有行的 Range 对象。Range 对象,只读.工作表上已使用区域的行数。 Ls = .UsedRange。Columns.Count’Count 属性.描述:返回集合或 Dictionary 对象中的条目数.只读。语法:object。Count object 总是“应用于"列表中某一项的名称。工作表上已使用区域的列数。 arr = .Range(”a” & R1).Resize(Rs, Ls)‘arr为变量,在VBA中,变量无需声明就可以直接使用,此时该变量为变体变量。Resize 属性.在Excel中,Resize 属性的功能为调整指定区域的大小。返回 Range 对象,该对象代表调整后的区域。 expression.Resize(RowSize, ColumnSize) expression 必需。该表达式返回要调整大小的 Range 对象. RowSize Variant 类型,可选.新区域中的行数。如果省略该参数,则该区域中的行数保持不变. ColumnSize Variant类型,可选。新区域中的列数。如果省略该参数.则该区域中的列数保持不变。 Range("a65536”)。End(xlUp)。Offset(1).Resize(Rs, Ls) = arr End With Next Application.EnableEvents = True Application.ScreenUpdating = True End Sub 修改“开始行号”. 将光标定位到代码中间任意位置,按F5运行它。 关闭VBE窗口。注意单词之间要用空格隔开。 Excel多个工作簿中的工作表合并到一个工作簿中 有时,需要将多个Excel工作簿中的工作表合并到一个工作簿中。有多种合并工作簿的情形,下面先给出一种合并多个工作簿的VBA范例,供参考。(此方法将一个工作簿中所有的工作表复制到一张工作表上) 方法1 Sub CombineWorkbooks() Dim wk As Workbook Dim sh As Worksheet Dim strFileName As String Dim strFileDir As String Dim nm As String nm = ThisWorkbook.Name strFileDir = ThisWorkbook.path & ”\” Application.ScreenUpdating = False strFileName = Dir(strFileDir & "*。xls”) Do While strFileName 〈〉 vbNullString If strFileName <〉 nm Then MsgBox strFileName Set wk = Workbooks.Open(Filename:=strFileDir & strFileName, ReadOnly:=True) strFileName = Left(Left(strFileName, Len(strFileName) - 4), 29) ’取主文件名,除掉。XLS For Each sh In wk。Sheets sh。Copy After:=ThisWorkbook。Sheets(ThisWorkbook。Sheets.Count) ’工作表命名,以工作表所在文件名为类 If wk。Sheets。Count > 1 Then ThisWorkbook.Sheets(ThisWorkbook。Sheets.Count)。Name = strFileName & sh。Name Else ThisWorkbook.Sheets(ThisWorkbook.Sheets。Count).Name = strFileName End If Next wk。Close SaveChanges:=False End If strFileName = Dir Loop Application。ScreenUpdating = True End Sub 方法2 Sub UnWorksheets() Application。ScreenUpdating = False Dim lj As String Dim dirname As String Dim nm As String Dim sname As String Dim i As Integer, ii As Integer lj = ActiveWorkbook。path nm = ActiveWorkbook。Name dirname = Dir(lj & ”\*.xls") '查找文件 Do While dirname 〈〉 ”” If dirname 〈〉 nm Then Workbooks。Open Filename:=lj & ”\” & dirname ’打开文件 ii = ActiveWorkbook。Sheets.Count ’统计工作表个数 ’复制新打开工作簿的每一个工作表到当前工作表(After:=ThisWorkbook.Sheets(ThisWorkbook。Sheets。Count))最后一个后面 For i = 1 To ii Workbooks(dirname).Sheets(i)。Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count) Next Workbooks(dirname)。Close False End If dirname = Dir Loop End Sub 在同一文件夹下有多个工作簿,其中有一个用于汇总的工作簿,将除该汇总工作簿外的其它工作簿中的每一张工作表的数据汇总到该汇总工作簿的一张工作表中.好用! Sub UnionWorksheets() Application。ScreenUpdating = False'关闭屏幕更新 Dim lj As String Dim dirname As String Dim nm As String Dim i As Integer, ii As Integer lj = ActiveWorkbook.path’Path 属性。返回指定文件、文件夹、或驱动器的路径。 nm = ActiveWorkbook。Name’ Name属性。指定一个控件或对象的名称或与 Font 对象相关的字体的名称。变量赋值使用=“等号”,“=”后的值可以是单纯的数值、字符串或表达式。 dirname = Dir(lj & ”\*.xls”)' Dir 函数。返回一个String,用以表示一个文件名、目录名或文件夹名称,它必须与指定的模式或文件属性、或磁盘卷标相匹配。 Cells。Clear'Clear 方法。清除 Err 对象的所有属性设置。 Do While dirname 〈〉 "”’前置式DO…LOOP循环。 If dirname <> nm Then Workbooks。Open Filename:=lj & ”\” & dirname’Open 方法。“<〉"为比较运算符“不等于”。 ii = ActiveWorkbook。Sheets。Count’Sheets 属性 Workbooks(nm)。Activate'Activate方法。Workbooks(nm)属使用工作簿名称引用workbook,语法格式为:workbook( 工作簿名称)。 ’复制新打开工作簿的每一个工作表的已用区域到当前工作表 For i = 1 To ii Workbooks(dirname)。Sheets(i)。UsedRange。Copy _ Range("a65536”).End(xlUp)。Offset(2, 0)’ UsedRange 属性。返回代表指定工作表上已使用区域的 Range 对象.只读 Next Workbooks(dirname)。Close False'Close 方法.关闭一个打开的 TextStream 文件。语法:object.Close object始终是一个 TextStream 对象的名字 End If dirname = Dir Loop End Sub 如何利用VBA将多工作表的数据汇总而不复制标题?A:将sheet2工作表中待复制的数据定义为“表1”,将sheet3工作表中待复制的数据定义为“表2” ALT+F11→新建模块,并输入如下代码 Sub 利用表仅复制数据() Dim sh As Worksheet, I For Each sh In Worksheets If sh.Name 〈〉 "Sheet1" Then I = I + 1 Range(”表” & I)。Copy Sheets("Sheet1”)。Range("A65536”)。End(xlUp)。Offset(1, 0) End If Next sh End Sub 如何将多个工作簿中的工作表一次性合S 问题:如何将多个工作簿中的工作表一次性合S 答案: 关于如何将多个工作簿(xls文件)中的工作表(worksheet)复制到同一个工作簿中的解决.下面的代码可以将某个磁盘目录下的多个xls文件的复制到含有这段代码的xls文件中,而且xls文件可以根据处理worksheet的数量自动的增加xls文件中worksheet的数量。使用时将代码复制到xls文件的宏内,然后运行宏main即可。 代码中运用了filesystemobject对象和excel的range对象的copy方法以及worksheet和workbook对象的add方法。这里就不在赘述,可以在excel vba的帮助中找到。 Sub Mergesheet(ByVal sPath As String) Dim fs, fd, fl As Object Dim xlbook As Workbook Dim xlsheet As Worksheet Dim i_cnt As Integer i_cnt = 1 Set fs = CreateObject(”scripting.filesystemobject”) '建立filesystemobject If Not fs。FolderExists(sPath) Then MsgBox ”目录不存在!”, vbCritical Exit Sub End If Set fd = fs.getfolder(sPath) ’或取文件夹 For Each fl In fd.Files ’依此处理文件夹中的文件 If Right(Trim(fl.Name), 3) = "xls” Then '只处理xls文件 Set xlbook = Application。Workbooks。Open(sPath ”\" fl.Name) ’打开xls文件 If i_cnt <〉 3 Then ’默认的worksheet数量是3,如果超过就自动的增加 Set xlsheet = Application.Workbooks(1).Worksheets.Add Else Set xlsheet = Application。Workbooks(1).Worksheets(i_cnt) End If xlbook。Worksheets(1).Rows。Copy xlsheet。Cells(1, 1) ’复制worksheet i_cnt = i_cnt 1 xlbook.Close ’关闭已经打开的xls文件 End If Next Set fl = Nothing '关闭file,folder,filesystemobject对象 Set fd = Nothing Set fs = Nothing End Sub Sub main() Dim sPath As String sPath = InputBox(”请输入目录!如C:", ”合并目录下xls文件的sheet1”) ’显示输入框获取磁盘目录 If sPath = " ” Then Exit Sub Mergesheet (sPath) End Sub 主题:[求助]多个工作簿中的工作表数据汇总到另一个工作簿中 回复 SubBB() Workbooks.OpenFilename:=”D:\数据汇总\"&Sheets("目录”)。Range(”E1”) DimxShAsWorksheet DimIAsLong,JAsLong Sheets(”按钢筋种类汇总”).Select SetxSh=Sheets(”按钢筋种类汇总”) J=WorksheetFunction.Match(”D”,xSh。Range(”D:d")) xSh。Range(”A2:Q”&J)。Copy Windows("指定目录下文件名.xls”)。Activate Sheets(”汇总目录”).Select Range(”A65536”)。End(xlUp).Offset(1,0)。PasteSpecialPaste:=xlPastevalues Application。CutCopyMode=False B=Sheets("目录”).Range("E1”)。value Windows(B).Activate ActiveWindow。Close EndSub 如何将多张excel工作表批量复制到一个表中 一个表中有若干个SHEET,表头都是一样的,我需要把这若干个SHEET合并到一个SHEET里面,单纯的复制粘贴太麻烦了,表格太多。请问谁能告诉我个简单的方法,最好能有个宏能处理,方便的话发个宏到我邮箱里面。 比较简单,我正好以前回答过.你参考一下. 复制下面代码到一个宏里运行就可以了。 可以根据注释修改相应数字 Dim RowIndex As Integer Dim RefCol As Integer Dim SubRowIndex As Integer Dim SubColIndex As Integer RowIndex = 1 ’主表从第二行开始 RefCol = 1 ’主表从第二列开始 For SheetIndex = 1 To 100 ’100个sheet 循环 SubRowIndex = 1 Do ’假设汇总至"sheetmain" For SubColIndex = 1 To 10 ’子表从第一列开始,共10列 Worksheets(”sheetmain”)。Cells(RowIndex, SubColIndex + RefCol) = Worksheets(”Sheet” & SheetIndex)。Cells(SubRowIndex, SubColIndex)。Value '实际操作赋值语句 Next SubColIndex SubRowIndex = SubRowIndex + 1 RowIndex = RowIndex + 1 Loop While Worksheets("Sheet” & SheetIndex)。Cells(SubRowIndex, 1) 〈> "" '子表第一列为空时跳出 Next SheetIndex 一个工作薄中有70个工作表,且所有工作表是完全相同的,问题是如何把后面所有工作表中相同位置处的数字引用到表1中同一列中??即在表1一个单元格中出现这个数据,然后下拉就能出现所有工作表中的那个特定数据? 问题补充: 我的是工资表,因为好多东西比较复杂,所以每个人都单独列了一个工作表,但格式都是一样的,现在我想提取出每个工作表中相同单元格的数量,用公式只能提出一张表的数据,下拉就会变,怎么办??? 最佳答案 假设你要引用的是另外70个不同表中D4这个单元格。 1。新建表“汇总",在第一列A1输入"工号”A2至A71录入70个表的名字。 2.第二列B2单元格输入公式:“=INDIRECT(CONCATENATE(A2,"!D4”))",公式的意思是引用“汇总”表A2单元格相同的表中D4单元格的内容。(假设A2=王小明,则引用表“王小明”里的D4单元格的值) 3。拖拽B2的右下角自动生成一列对70个表对应单元格格的引用了,其他的引申就自己开发了,公式可以结合其他运算的。 以上方法我自己摸索出来的,不保证最高效,但还算好用. excel sheet中数据的快速复制 ’利用Copymemory 复制数组,实现excel sheet中数据的任意复制,粘贴区域小于复制区域,数据将被截取,否则将用空格填充 Private Declare Sub CopyMemory Lib ”kernel32” Alias ”RtlMoveMemory" (pDst As Any, pSrc As Any, ByVal ByteLen As Long) Sub copyrange(ByVal src As Range, ByVal dest As Range) ’ copy all data from src to dest Dim arrsrc(), arrdest() arrsrc = src arrdest = dest ReDim arrdest(1 To dest.Rows.Count, 1 To dest。Columns。Count) CopyMemory ByVal VarPtr(arrdest(1, 1)), ByVal VarPtr(arrsrc(1, 1)), 16 * src。Rows。Count * src。Columns.Count dest = arrdest Erase arrsrc Erase arrdest End Sub Sub xxx() ’将a1:c100 区域数据复制到d3:h40 copyrangeRange(”a1:c100"), Range(”d3:h40”) End Sub 100多张工作表的有关内容如何批量复制在一张表上 Sub tt() Application.ScreenUpdating = False Dim x Rows(”2:” & [a65536]。End(xlUp)。Row + 1).Clear For x = 1 To Sheets.Count With Sheets(”都要复制到这张表上") If Sheets(x).Name 〈〉 ”都要复制到这张表上” Then Sheets(x)。Range(”A8", ”H25")。Copy 。Range(”A” & 。[a65536].End(xlUp)。Row + 1)’”都要复制到这张表上”是工作表名, "A8”, ”H25”是复制区域。 End With Next x End Sub 如何利用VBA将多工作表的数据汇总而不复制标题?A:将sheet2工作表中待复制的数据定义为“表1”,将sheet3工作表中待复制的数据定义为“表2” ALT+F11→新建模块,并输入如下代码 Sub 利用表仅复制数据() Dim sh As Worksheet, I For Each sh In Worksheets If sh。Name <〉 ”Sheet1” Then I = I + 1 Range(”表" & I).Copy Sheets("Sheet1")。Range(”A65536”).End(xlUp)。Offset(1, 0) End If Next sh End Su
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服