主体是对该工作簿中所有的工作表进行遍历,然后将内容依次输出到一个工作表中。
下面看代码:
Rem 将多个工作表中的内容汇总到一个工作表中
Sub collect()
Rem 定义要循环的工作表和拿来去循环的工作表对象变量
Dim ws As Worksheet
Dim thissheet As Worksheet
Rem 设置要去循环的工作表对象变量
Set thissheet = ThisWorkbook.Sheets("汇总")
Rem 进行循环
For Each ws In ThisWorkbook.Sheets
Rem 如果不是用来存放的工作表就将内容放入
If ws.Name <> thissheet.Name Then
Rem 将工作表表名放入
thissheet.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Value = ws.Name
Rem 将工作表中的内容放入
ws.UsedRange.Copy thissheet.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
End If
Next ws
End Sub
效果图:
sheet1的内容:
另一个工作表中的内容:
汇总后的内容:
语法内容:
定义变量:
定义变量用dim,对象是工作表用worksheet,给对象赋值用set
选工作表,工作簿:
thisworkbook是当前的工作簿,如果要选这个工作簿里的哪个工作表用
thisworkbook.sheets(“…”)的写法,如果要选当前工作表直接写activesheet
copy:
使用.copy复制选中的区域,后面跟要粘贴过去的地方
单元格的所在行列:
显示某个单元格的行用 工作表名.cells(第几行,第几列).row 或 工作表名.range(“哪个单元格”).row
显示某个单元格的列用 工作表名.cells(第几行,第几列).column
或 工作表名.range(“哪个单元格”).column
rows.count是工作表中一共有多少行,可不加父对象单独使用
某单元格.end(xlup) 是从某单元格向上数,到第一个有内容的单元格那里
某单元格.offset(x,y) 是从某单元格偏移x列和y行到另一个单元格