文档库 最新最全的文档下载
当前位置:文档库 › excel如何把多张工作表内容快速复制到一张表

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

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

给工作表的每行都附上工作表名作为新列

Sub test()

Dim i As Integer

Dim j As Integer

Dim o As Integer

i = Worksheets.Count

For j = 1 To i

'o = Worksheets(j).UsedRange.Rows.Count

Worksheets(j).Range("k3:k30") = Worksheets(j).Name

Next

End Sub

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

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

(首选)

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 对象,只读。

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).Row A列数据区域最后一行的行号

Range("b65536").End(xlUp).Row B列数据区域最后一行的行号

Range("d65536").End(xlUp).Row D列数据区域最后一行的行号

Range("k65536").End(xlUp).Row K列数据区域最后一行的行号

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 https://www.wendangku.net/doc/ba12490690.html, <> "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 https://www.wendangku.net/doc/ba12490690.html, <> "理数" Then

iRow = sh.Range("a3").End(xlDown).Row

sqlTemp = "select * from [" & https://www.wendangku.net/doc/ba12490690.html, & "$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 = https://www.wendangku.net/doc/ba12490690.html,

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 & https://www.wendangku.net/doc/ba12490690.html,

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 = https://www.wendangku.net/doc/ba12490690.html,

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 = https://www.wendangku.net/doc/ba12490690.html,’ Name属性。指定一个控件或对象的名称或与Font 对象相关的字体的名称。变量赋值使

用=“等号”,“=”后的值可以是单纯的数值、字符串或表达式。

dirname = Dir(lj & "\*.xls")’ Dir 函数。返回一个String,用以表示一个文件名、目录名或文件夹名称,它必须与指定的模式或文件属性、或磁盘卷标相匹配。

Cells.Clear’ Clear 方法。清除 Err 对象的所有属性设置。

Do While dirname <> ""’前置式D O…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 https://www.wendangku.net/doc/ba12490690.html, <> "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(https://www.wendangku.net/doc/ba12490690.html,), 3) = "xls" Then '只处理xls文件

Set xlbook = Application.Workbooks.Open(sPath "\" https://www.wendangku.net/doc/ba12490690.html,) '打开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:=xlPaste value s

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 "RtlMoveMe mory" (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

copyrange Range("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 https://www.wendangku.net/doc/ba12490690.html, <> "Sheet1" Then

I = I + 1

Range("表" & I).Copy Sheets("Sheet1").Range("A65536").End(xlUp).Offset(1, 0)

End If

Next sh

End Sub

相关文档