。
。
今天将大家用VBA一键合并,只需要几秒种,为了测试这段代码,我们新建了4个工作簿在文件夹中,数据都是模拟的,做试验一键合并代码 *** 作如下所示:我们看原始表格数据,其中,第1个工作簿有点特殊,这个工作簿中,有两个工作表,第1个工作表的内容是:第2个工作表的内容是:第2,3,4个工作簿中都是仅有1个工作表,如下所示:通过代码,我们一键可以合并,得到结果,这个汇总的结果有两个特点1、最后一列,还会显示这些数据的来源是哪个工作簿,哪个表名的。
2、原始数据中每一行的标题自动取消,只保留了一个标题。
如下所示:在Excel菜单栏中,点击开发工具,打开VBA,输入如下代码:其中代码如下所示:Sub 合并目录所有工作簿全部工作表()Dim MP, MN, AW, Wbn, wnDim Wb As WorkbookDim i, a, b, d, c, eApplication.ScreenUpdating = FalseMP = ActiveWorkbook.PathMN = Dir(MP & “” & “*.xls”)AW = ActiveWorkbook.NameNum = 0e = 1Do While MN <> “”If MN <> AW ThenSet Wb = Workbooks.Open(MP & “” & MN)a = a + 1With Workbooks(1).ActiveSheetFor i = 1 To Sheets.CountIf Sheets(i).Range(“a1”) <> “” ThenWb.Sheets(i).Range(“a1”).Resize(1, Sheets(i).UsedRange.Columns.Count).Copy .Cells(1, 1)d = Wb.Sheets(i).UsedRange.Columns.Countc = Wb.Sheets(i).UsedRange.Rows.Count – 1wn = Wb.Sheets(i).Name.Cells(1, d + 1) = “表名”.Cells(e + 1, d + 1).Resize(c, 1) = MN & wne = e + cWb.Sheets(i).Range(“a2”).Resize(c,d).Copy .Cells(.Range(“a1048576”).End(xlUp).Row + 1, 1)End IfNextWbn = Wbn & Chr(13) & Wb.NameWb.Close FalseEnd WithEnd IfMN = DirLoopRange(“a1”).SelectApplication.ScreenUpdating = TrueMsgBox “共合并了” & a & “个工作薄下全部工作表。
如下:” & Chr(13) & Wbn, vbInformation, “提示”
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)