文章目录

今天又有人来问问题了,要合并一个文件里面的几张Excel表。
第一反应是应该有个按钮什么的可以直接合并的吧,然后下意识的搜索了一下。未果,微软网上面倒是有个2003的合并的说明,就是按一下那个按钮,然后13的里面就没有了 -_-|||
然后想着起码用VBA总是可以的吧,所以就又搜索了一下,拷贝了一段代码:

Sub 合并当前工作簿下的所有工作表()

Application.ScreenUpdating = False

For j = 1 To Sheets.Count

  If Sheets(j).Name <> ActiveSheet.Name Then
  X = Range("A65536").End(xlUp).Row + 1
  Sheets(j).UsedRange.Copy Cells(X, 1)

  End If

Next

Range("B1").Select
Application.ScreenUpdating = True
MsgBox "当前工作簿下的全部工作表已经合并完毕!", vbInformation, "提示"

End Sub

试了一下,果然可以,就是还有一个小问题,把每张表里面所有的信息都拷贝过来了,但是其实第一行我是不要的。
那么就有两个思路,一个是在选取要拷贝的区域的时候第一行不要选,要么是拷贝完了把多余的第一行给删了,我选择了第二个方案,谁让它看起来比较简单呢…

Sub 合并当前工作簿下的所有工作表()
Application.ScreenUpdating = False
   If Sheets(1).Name <> ActiveSheet.Name Then
       X = Range("A65536").End(xlUp).Row
       Sheets(1).UsedRange.Copy Cells(X, 1)
   End If
For j = 2 To Sheets.Count
   If Sheets(j).Name <> ActiveSheet.Name Then
       X = Range("A65536").End(xlUp).Row + 1
       Sheets(j).UsedRange.Copy Cells(X, 1)
       ActiveSheet.UsedRange.Rows(X).Delete
   End If
Next
Range("B1").Select
Application.ScreenUpdating = True
MsgBox "当前工作簿下的全部工作表已经合并完毕!", vbInformation, "提示"
End Sub

这样就可以啦。用起来就是在新建的sheet里面运行一下这个宏,就把其他所有的Sheets合并了,然后只保留第一个Sheet的表头。