| | | |---|---| |参考文献|[https://www.cnblogs.com/cyf18/archive/2004/01/13/14287227.html](https://www.cnblogs.com/cyf18/archive/2004/01/13/14287227.html)| Sub hb() Dim bt, i, r, c, n, first As Long bt = 1 '表头行数,多行改为对应数值 Cells.Clear For i = 1 To Sheets.Count If Sheets(i).Name \<\> ActiveSheet.Name Then If first = 0 Then c = Sheets(i).Cells(1, Columns.Count).End(xlToLeft).Column Sheets(i).Range("A1").Resize(bt, c).Copy Range("A1") n = bt + 1: first = 1 End If r = Sheets(i).Cells(Rows.Count, "A").End(xlUp).Row Sheets(i).Range("A" & bt + 1).Resize(r - 1, c).Copy Range("A" & n) n = n + r - bt End If Next End Sub | | | |---|---| |参考文献|[https://blog.csdn.net/wisdom_c_1010/article/details/79003842](https://blog.csdn.net/wisdom_c_1010/article/details/79003842)| |个人心得|模糊合并注意like用法| Sub 合并当前工作簿下的所有工作表() Application.ScreenUpdating = False For j = 1 To Sheets.Count If Sheets(j).Name \<\> ActiveSheet.Name AND Sheets(j).Name Like "CB*" Then X = Range("A65536").End(xlUp).Row + 1 Sheets(j).UsedRange.Offset(1).Copy Cells(X, 1) End If Next Range("B1").Select Application.ScreenUpdating = True MsgBox "当前工作簿下的全部工作表已经合并完毕!", vbInformation, "提示" End Sub UsedRange.Offset(1):目标区域是当前表已用区域整体下移1行后的区域 | | | |---|---| |参考文献|[http://club.excelhome.net/thread-1408198-1-1.html](http://club.excelhome.net/thread-1408198-1-1.html)| |个人心得|指定工作表合并-学习版本| Sub CopyCellData() Dim RowEnd Dim SheetName Dim SheetObj SheetName = ActiveSheet.Name RowEnd = ActiveSheet.UsedRange.Rows.Count For Each SheetObj In Worksheets If SheetObj.Name \<\> SheetName Then RowEnd = SheetObj.UsedRange.Rows.Count SheetObj.Rows("1:" & RowEnd).Copy RowEnd = Sheets(SheetName).UsedRange.Rows.Count If RowEnd \<\> 1 Then Sheets(SheetName).Range("A" & RowEnd + 1) = SheetObj.Name Sheets(SheetName).Range("A" & RowEnd + 2).Select Else Sheets(SheetName).Range("A" & RowEnd) = SheetObj.Name Sheets(SheetName).Range("A" & RowEnd + 1).Select End If ActiveSheet.Paste End If Next SheetObj