在EXCEL中,到合并表里打开宏,将下列代码进行粘贴并保存。然后返回你需要合并的工作表中。或按 alt + f11,双击工程资源管理器里面的合并表的SHEET,在右侧的代码区粘贴如下代码。运行此宏,就合并了。
Sub 合并sheets()
n = 12 '源表个数,根据需要修改!
nstart = 9 '每个单表数据的起始行数,根据需要修改!
k = nstart '目标表的行标
For i = 1 To n
irow = nstart '行标
While Sheets(i).Cells(irow + 1, 1) <> "" '后面个1以第1列数据为结束标示,确定源表的行数,根据需要修改!
irow = irow + 1
Wend
Sheets(i).Rows(nstart & ":" & irow).Copy '复制源数据行
Sheets(n + 1).Activate
Sheets(n + 1).Cells(k, 1).Select
ActiveSheet.Paste '粘贴数据
k = k + irow - nstart + 1
Next i
End Sub
没法快速合并,一个个复制粘贴吧。
最简单的是复制,可惜表单太多,手工复制很慢,可以用下面的宏(复制全部表单到1号表单)。
for each s in sheets
if s.name<>sheets(1).name then
x="a" & cstr(sheets(1).Range("a1").SpecialCells(xlLastCell).Row+1)
s.Range(s.range("a1"), s.range("a1").SpecialCells(xlLastCell)).copy sheets(1).Range(x)
endif
next s
注意:如果要复制的表单数据行数与1号表单末行行号合计数超过表单行数极限,宏过程会出错。
利用函数的方法就行了,如在A1单元格中输入=sheet2!B1,就把sheet2 B2中的数据倒过来了,同样可以把其他表中的数据倒过来。
当然,输入公式要费时一些。可以利用在一列单元格中输入sheet1、sheet2、……sheet600,输入这些应该很方便的,在另外一列中输入B1,B1……B1 共600个,这个也很方便,利用文本合并的方式将他们合并,不要忘了在前面加 = 号。如“=CONCATENATE("=",C1,”!",E1),复制600个,最后将这600个选中,复制,粘贴(选只有值)搞定,对于不同表格中的B1 作一些修改。