??斗地主捕鱼电竞提现秒到 广告位招租 - 15元/月全站展示
??支付宝搜索579087183领大额红包 ??伍彩集团官网直营彩票
??好待遇→招代理 ??伍彩集团官网直营彩票
??络茄网 广告位招租 - 15元/月全站展示
多个excel工作簿汇总,同一工作簿中sheets合并

转载   2014-08-06   浏览量:76



工作中经?;嵊玫降陌鸭父?span style="font-family:calibri;">Excel文件合并到一个,或者是把一个Excel文件里的所有Sheet合并到一个Sheet来进行统计。下面分别提供用vba宏来解决这两个问题的方法。


1、合并Excel文件

打开一个空Excel文件,Alt+F11,插入一个???,开始写代码:
Sub MergeWorkbooks()
   Dim FileSet
   Dim i As Integer

   On Error GoTo 0
   Application.ScreenUpdating = False

   FileSet = Application.GetOpenFilename(FileFilter:="Excel 2003(*.xls),*.xls,Excel 2007(*.xlsx),*.xlsx", _
                                           MultiSelect:=True, Title:="选择要合并的文件")

   If TypeName(FileSet) = "Boolean" Then
       GoTo ExitSub
   End If

   For Each Filename In FileSet
       Workbooks.Open Filename
       Sheets().Move After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
   Next

ExitSub:
   Application.ScreenUpdating = True

End Sub


这段代码的作用:它首先打开一个文件选择框,你可以选择一个或多个文件,然后把这些文件里的所有Sheet合并到当前这个工作簿里来,有重名的Sheet会自动在后面加数字。

2、合并一个EXCEL多个sheet的内容到一个汇总sheet同上,再添加一个??榘?,代码如下:
Function LastRow(sh As Worksheet)
   On Error Resume Next
   LastRow = sh.Cells.Find(what:="*", _
                           After:=sh.Range("A1"), _
                           Lookat:=xlPart, _
                           LookIn:=xlFormulas, _
                           SearchOrder:=xlByRows, _
                           SearchDirection:=xlPrevious, _
                           MatchCase:=False).Row
   On Error GoTo 0
End Function

Sub MergeSheets()
   Dim sh As Worksheet
   Dim DestSh As Worksheet
   Dim Last As Long
   Dim shLast As Long
   Dim CopyRng As Range
   Dim StartRow As Long

   Application.ScreenUpdating = False
   Application.EnableEvents = False

   '新建一个“汇总”工作表
   Application.DisplayAlerts = False
   On Error Resume Next
   ActiveWorkbook.Worksheets("汇总").Delete
   On Error GoTo 0
   Application.DisplayAlerts = True
   Set DestSh = ActiveWorkbook.Worksheets.Add
   DestSh.Name = "汇总"

   '开始复制的行号,忽略表头,无表头请设置成1
   StartRow = 2

   For Each sh In ActiveWorkbook.Worksheets

       If sh.Name <> DestSh.Name Then
           Last = LastRow(DestSh)
           shLast = LastRow(sh)

           If shLast > 0 And shLast >= StartRow Then

               Set CopyRng = sh.Range(sh.Rows(StartRow), sh.Rows(shLast))

               If Last + CopyRng.Rows.Count > DestSh.Rows.Count Then
                   MsgBox "内容太多放不下啦!"
                   GoTo ExitSub
               End If

               CopyRng.Copy
               With DestSh.Cells(Last + 1, "A")
                   .PasteSpecial xlPasteValues
                   .PasteSpecial xlPasteFormats
                   Application.CutCopyMode = False
               End With
           End If
       End If
   Next

ExitSub:
   Application.GoTo DestSh.Cells(1)
   DestSh.Columns.AutoFit
   Application.ScreenUpdating = True
   Application.EnableEvents = True

End Sub


这段代码的作用:它会新建一个叫做“汇总”的工作表,然后把当前工作簿里的所有Sheet里有数据的内容都复制到“汇总”表里。提示:如果数据表里的内容没有表头的话需要把StartRow = 2改成StartRow = 1。

3、按需合并工作表在EXCEL中打开宏,将下列代码进行粘贴并保存。然后返回你需要合并的工作表中,运行此宏,看看效果吧。

Sub 合并sheets()
    n = 12 '源表个数,根据需要修改!
    nstart = 9 '每个单表数据的开始行数,根据需要修改!
    k = nstart '目标表的行标
    For i = 1 To n
        irow = nstart '行标
        While Sheets(i).Cells(irow + 1, 2) <> "" '后面个1以第2列数据的最后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


转载自:https://blog.csdn.net/zhu418766417/article/details/38398787

招聘 不方便扫码就复制添加关注:程序员招聘谷,微信号:jobs1024



excel2013中数据验证(数据有效性)的使用方法介绍
数据验证即数据有效性,那么,excel2013数据有效性在哪里?应该如何使用呢?今天小编就给大家简单介绍一下excel2013中数据验证(数据有效性)的使用方法,希望对大家有所帮助
8张动图,学会Excel中的高级筛选
一起来学习Excel中的高级筛选,看看高级筛选里藏着哪些秘密。
一组实用的自定义格式应用套路
一组非常实用的自定义格式应用技巧。
Excel中的日期时间计算,套路很全
介绍日期时间计算的套路,掌握这些套路,工作效率可以再高一点点。
拆分同一单元格中的姓名,原来这么简单??!
在这个表格内,同一个部门的人员名单都挤到一个单元格内。现在问题来了,要把这样的数据转换成数据列表,该怎么操作呢?
@全体:昨天我脱单了
介绍百分比图表的制作。
大家好,今天我分享的内容是数据有效性
数据有效性不仅能够对单元格的输入数据进行条件限制,还可以在单元格中创建下拉列表菜单方便用户选择输入。
年终总结写了吗?给你一个按年、月、季度汇总数据的妙招
大家日常工作中经?;嵊龅桨茨?、月汇总的问题吧,今天老祝就和小伙伴们一起就看看哪种方法最简单。先来看基础的数据表格,包括日期、销售区域和销售数量等几百条数据:
抱怨加班之前,先看看这13个Excel技巧会不会
在Excel中输入日期时,年月日之间可以使用短横线-或是使用斜杠/作为间隔。但是很多小伙伴输入日期时习惯使用小数点作为间隔,例如2016.5.12这样的。这样的日期输入形式,在Excel中是无法被正确识别的,如何快速转换为规范的日期呢?
5个简单实用的Excel技巧
1、同时冻结指定行列,2、连接文字和日期,3、筛选后可以连续的序号,4、计算文本算式,5、超过日期,表格不显示内容。