资源描述
如何把多张工作表内容快速复制到一张表
我有一份教师工资表,一个工作簿里有好多张工作表的,现在我想把各工作表里的内容全部合到一张表中,除了用复制粘贴的方法外,请问还能有什么好的方法快速合到一起吗?
(首选)
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
展开阅读全文