精华内容
下载资源
问答
  • 以下的代码功能是:快速合并同一个工作薄中的多个工作表合并成为一个工作表。合并之前,请先创建一个空白的 Sheet 作为合并目标 Sheet ,这个 Sheet 必须是第一个 Sheet 。如果不合并标题行(比如第一行)则 j=1 改...

    以下的代码功能是:快速合并同一个工作薄中的多个工作表,合并成为一个工作表。

    合并之前,请先创建一个空白的 Sheet 作为合并目标 Sheet ,这个 Sheet 必须是第一个 Sheet 。

    如果不合并标题行(比如第一行)则 j=1 改为 j=2

    如果数据不是从第一行,或者第一列开始的,请修改 j=1 及 k=2 两行的参数。

    比如 j=2 k=3 表示从 第2行,第三列开始的数据。

    以下是合并的代码,希望对您有所帮助。

    Sub CombineSheet()

    Dim i, j, k, n As Integer

    n = 1

    For i = 2 To ThisWorkbook.Sheets.Count

    For j = 1 To ThisWorkbook.Sheets(i).UsedRange.Rows.Count

    For k = 1 To ThisWorkbook.Sheets(i).UsedRange.Columns.Count

    ThisWorkbook.Sheets(1).Cells(n, k).Value = ThisWorkbook.Sheets(i).Cells(j, k).Value

    Next k

    n = n + 1

    Next j

    Next i

    End Sub

    展开全文
  • 原标题:Excel通用VBA代码一键合并多个工作表至总表!一个工作簿中会有很多个相同格式,标题行内容和顺序都一样工作表,我们想把这个工作表中数据全部放至一个总表数据中。 图片上示例是3个工作表,实际工作中...

    原标题:Excel通用VBA代码一键合并多个工作表至总表!

    一个工作簿中会有很多个相同格式,标题行内容和顺序都一样的工作表,我们想把这个工作表中的数据全部放至一个总表数据中。

    图片上示例是3个工作表,实际工作中可能是几十个,如果一个一个复制粘贴至总表里面,耗费的时间很长,并且容易出错,今天教大家用一段通用的VBA代码来实现一键快速合并,效果如下所示:

    只需要点击一下多表合并的按纽,后面所有工作表,会按顺序全部放至汇总表格中。

    现在是每个工作表中的标题是4个项目,如果是更多项目,同样的可以进行合并,例如我们在英雄1表格中添加一列

    用这个代码,同样的可以进行快速合并,只需要在汇总的表格中添加一个标题第五列,然后点击多表合并按纽即可

    同样的,如果是再添加1个工作表,在英雄1后面插入了一个sheet2表格,里面输入一条同样的数据,如下所示:

    同样的,只需要点击多表合并按纽便可完成,如下所示:

    那么这个VBA代码是什么,如下所示:

    Sub 多表合并()

    Dim arr()

    a = Range("a1").End(xlToRight).Column

    For Each sh In Sheets

    If sh.Name <> "汇总" Then

    arr1 = sh.Range("a2").Resize(sh.UsedRange.Rows.Count - 1, a)

    act = act + UBound(arr1)

    ReDim Preserve arr(1 To a, 1 To act) '

    For j = 1 To UBound(arr1)

    n = n + 1

    For i = 1 To a

    arr(i, n) = arr1(j, i)

    Next i

    Next j

    End If

    Next

    Sheets("汇总").[a2].Resize(n, a) = Application.Transpose(arr)

    End Sub

    这段代码直接保存即可,有了这段代码,我们在VBA中插入一个模块,将代码写入进去,插入一个按纽,绑定代码,即可实现,绑定代码的操作过程如下所示:

    好,你学会了吗?

    给自己持续学习的态度点个赞吧!

    欢迎留言讨论,期待您的转发分享!

    -------------------------------

    谢谢关注,更多精彩内容持续更新中....返回搜狐,查看更多

    责任编辑:

    展开全文
  • 工作原因,需要统计所有单位帐号信息,但是每个单位帐号都分散在各自excel表格里,因此需要把多个execel表格相同某个sheet页做合并。 大致步骤拆分,分别搜了下VBA,拼凑了三天搞定,还是有点成就感 ...

    工作原因,需要统计所有单位的帐号信息,但是每个单位的帐号都分散在各自的excel表格里,因此需要把多个execel表格的相同的某个sheet页做合并。

    大致步骤拆分,分别搜了下VBA,拼凑了三天搞定,还是有点成就感的

    1. 数据:把源文件放在一个文件夹(XX\源文件\文件1.xslx 文件2.xlsx)需要合并到的目标文件放在XX\目标文件.xlsx

    2. 环境:打开目标文件,选择某个sheet页,右键选择“查看代码”,插入模块后粘贴下面的代码即可。在这里插入图片描述

    3. 步骤:(1)遍历打开文件;(2)从源文件中复制,粘贴到目标文件sheet2的行列里面。

    Rem 将文件夹中所有excel表格某一sheet页复制到新excel表格某sheet页里。创建目标文件,在同路径下\源文件\下放入所有源文件,复制标准化的“项目经理”sheet页
    
    Sub hebing()
    
        Dim myPath, myName
        Dim wb, wbnow As Workbook
        Dim ws, wsnow As Worksheet
        Dim rg As Range
        Dim num, sheetcount, rcount, clcount, i, j, totalnum As Long
        
        Set wb = Workbooks(1)
        
        Rem 把本表格sheet1复制到sheet3前面
        'wb.Sheets(1).Copy before:=wb.Sheets(3)
        Rem 把本表格sheet1的部分区间粘贴到sheet3的某个表格里面
    '    wb.Sheets(1).Range("A" & 1 & ":C" & 3).Copy
    '    ActiveSheet.Paste Destination:=wb.Sheets(3).Range("C3:F8")
    '
        Rem 清理目标文件目标sheet页内容
        wb.Sheets(2).UsedRange.ClearContents
        num = 0
        totalnum = 0
        sheetcount = 1
        i = 1
        j = 1
        myPath = wb.Path
        Debug.Print "myPath = " & myPath
        
        myName = Dir(myPath & "\源文件\" & "*.xls*")  'myName string
        
        Rem 便利本文件所在目录\源文件 下所有的 excel 表格
        Do While myName <> ""
             Debug.Print "myName = " & myName
             num = num + 1  '处理完成的表格计数
             
             Rem 打开本文件路径下 “源文件”菜单下的excel表格
             Debug.Print ("open 语句:" & myPath & "\源文件\" & myName)
             Set wbnow = Application.Workbooks.Open(myPath & "\源文件\" & myName)
    '        Debug.Print ("wbnow = " & wbnow.Name)
             
             Rem 找到“项目经理”sheet页,获取有效行数,提取内容复制到本表格sheet中
             Set wsnow = wbnow.Sheets("项目经理")
             rcount = wsnow.UsedRange.Rows.Count
             totalnum = totalnum + rcount - 1
    '        clcount = wsnow.UsedRange.Columns.Count
             j = j + rcount
             
             Rem 如果第一个文件则复制表头,否则第一行不复制
             If num = 1 Then
                wsnow.Range("A1" & ":G" & rcount).Copy
                ActiveSheet.Paste Destination:=wb.Sheets(2).Range("A" & i & ":G" & j)
             Else
             Rem 如果不是第一个文件,则下次粘贴的内容的首行往前一格
                wsnow.Range("A2" & ":G" & rcount).Copy
                j = j - 1
                ActiveSheet.Paste Destination:=wb.Sheets(2).Range("A" & i & ":G" & j)
                i = i - 1
             End If
             Debug.Print ("paste OK !!")
             
             Rem 把源文件有效行列数复制到本文件的sheet2里面
            
             i = i + rcount
             Debug.Print ("文件 " & wbnow.Name & " 有项目经理复制完成: " & rcount & "" & clcount & "列")
             wbnow.Close True
             Rem 继续遍历下一个文件
             myName = Dir()
        Loop
        
        j = wb.Sheets(2).UsedRange.Rows.Count
        
        Debug.Print "完成" & num & "个文件, " & totalnum & "行。 汇总后" & j & "行!"
        MsgBox "完成" & num & "个文件, " & totalnum & "行。 汇总后" & j & "行!", vbOKOnly, "不错哦!"
        
    
    End Sub
    

    结果这个框蛮好看的,1610是把所有源文件剔除了第一行的有效数据行,第二个1611是含了表头第一行。
    在这里插入图片描述

    展开全文
  • 这是一个常用而且经典例子:根据内容,把N个工作表内容,合并到一个工作表中; ¤主要知识点¤ 1、工作表选取和内容复制; 2、IF分支语句和For循环语句使用; ¤代码实例¤ Option Explicit Sub ...

    这是一个常用而且经典的例子:根据内容,把N个工作表中的内容,合并到一个工作表中;

    ¤主要知识点¤

    1、工作表选取和内容的复制;

    2、IF分支语句和For循环语句的使用;

    ¤工作表样式¤


    ¤代码实例¤

    Option Explicit
    
    Sub 合并工作表()
    
        Dim i As Integer
        Dim x As Integer, y As Integer
        Dim k As Integer
            
    '    Range("A1").CurrentRegion.Select
    '    Selection.Delete
    
        Range("A1").CurrentRegion.Value = ""
        
        For i = Worksheets.Count To 2 Step -1
        
            If Worksheets(i).Name = "合并工作表" Then Exit For
            
            x = Worksheets(i).Range("A1").CurrentRegion.Rows.Count
            y = Worksheets(i).Range("A1").CurrentRegion.Columns.Count
            
            If Worksheets("合并工作表").Range("A1").Value = "" Then
                Worksheets(i).Range("A1").Resize(x, y).Copy Worksheets("合并工作表").Range("A1")
            Else
                k = Range("A1").CurrentRegion.Rows.Count + 1
                Worksheets(i).Range("A3").Resize(x - 2, y).Copy Worksheets("合并工作表").Range("A" & k)
            End If
                
        Next i
    
    Columns.AutoFit
    
    End Sub

    展开全文
  • 我有两excel工作簿,我需要从一和一组工作表中取出一组工作表,然后将其另存为新工作簿 . 由于我将每周做这,我想将它保存为宏/ vba .我在网上发现了这个代码并对其进行了编辑,但它无效 .Sub CopySheets()Dim...
  • 输入以下代码:Private Sub CommandButton1_Click()Dim path, yuan_name '定义路径名,被合并表名称Dim wb As Workbookpath = ThisWorkbook.path '指定路径为合并所在路径yuan_name = Dir(path & "\" & ...
  • 代码分为三部分: 第一部分是新建一个汇总工作表,并重新自定义命名; 第二部分是逐一将各个工作表复制粘贴到汇总工作表中;...Worksheets.Add '新建一个工作表 Sheets(1).Name = "汇总工作表" ...
  • 最近捣腾起VBA,通过录制宏,度娘,...效果视频和代码在下方,还有很多可以优化地方,也欢迎各路大神指点如果不会使用,也欢迎给我留言哦效果如下视频VBA合并多个工作簿https://www.zhihu.com/video/116754003944...
  • 每个工作簿里有多个工作表,需要将两个工作簿指定Sheet工作表(战力值排名)数据合并在一个新工作簿新Sheet页里面(新Sheet页需命名为“数据汇总”); <p>2、新Sheet...
  • 应同事需要写了一段VBA代码,实现的功能是把多个Excel文件的第一个工作表(Sheet)合并到一个Excel文件的多个工作表里,并且新工作表的名称等于原Excel文件的文件名。开发环境Excel2010,但是Excel2003应该也能用,...
  • 我们在实际工作中,有时候需要将多个工作薄中的sheet表的数据快速合并到一个sheet表里,假如我们使用手动去复制粘贴,这样就特别浪费时间和精力,所以我们可以使用VBA快速实现,我们只需要输入VBA代码。Sub 合并当前...
  • 沿用上一篇关于拆分excel工作表的文章的引子,本文分享下多个工作表合并VBA功能。案例仍使用上篇文章的例子。已知有BS、HR等多个部门,分别存放在独立的以部门命名的工作表中,现需要将多个部门的工作表合并为包含...
  • 工作中,我们会遇到这样的场景,将多个工作表的内容合并到一个工作簿中(区别于昨天的内容:拆分工作簿),如果有这样的需求,请跟我一起来了解,怎么用VBA实现呢。1、先来说明使用前的注意事项这里是分别复制给子工作...
  • 原来韩老师讲过用SQL语句,还讲过Excel|零基础也会合并多工作表,只需鼠标按序点下去,今天给大家两组代码,每次需要合并工作簿与或是工作表时,复制过来使用就好了。合并工作簿代码如下(代码横屏观看效果更好):...
  • VBA-合并多个工作簿

    万次阅读 2019-06-14 15:54:28
    1.首先我们理清思路,我们将所有要合并到一起的Excel工作簿放到一文件夹里,该文件夹里面有一启用宏的工作表,启动该工作表的宏,就可以将该文件夹里面的所有Excel文件的内容合并到一张表里面,后面可以将合并...
  • 工作中,我们会遇到这样的场景,将多个工作表的内容合并到一个工作簿中(区别于昨天的内容:拆分工作簿),如果有这样的需求,请跟我一起来了解,怎么用VBA实现呢。1、先来说明使用前的注意事项这里是分别复制给子工作...
  • 有时候,你需要将几十个工作簿中的内容,快速汇总至合并至一个工作簿,如果手动一个复制粘贴,那心里有苦说不出。。...第1个工作表的内容是:第2个工作表的内容是:第2,3,4个工作簿中都是仅有...
  • VBA 合并多个excel文件

    千次阅读 2019-05-22 18:24:58
    VBA 合并多个excel文件 先新建一个文件夹,把要合并多个excel文件放入这个文件夹,再新建一个excel文件,alt+f11(即右击查看代码),双击宏里这个sheet文件,在窗口中输入代码 Sub 合并当前目录下所有工作簿...
  • 展开全部分太少了,发一之前写过的合并多张32313133353236313431303231363533e4b893e5b19e31333337393439Excel到单张Sheet的代码,供参考:运行主函数Excels_2_SheetSubdeleteCells()DimsSets=ThisWorkbook.Sheets...
  • 我最开始接触VBA是17年,从录制宏开始研究了一下如何用一个按钮代替多个连续操作步骤。最后,代码虽然不怎么完美,但也成功应用了几个月,让我节省了不少时间。 但这篇不是讲怎么写VBA代码。 实际上,VBA早...
  • 有时后我觉得自己 像一只小小鸟 想要飞 却怎么...今天再来聊下如何汇总多个工作簿首个工作表的数据到总表。这事儿常用的方法有三种,一种是SQL语句,一种是Power Query,还有一种就是VBA了。相比前两种方法,VBA有更...
  • 时不时有同学问,一个工作簿中每天一份报表,一个月下来30份报表需要汇总成一张表,每个月都要复制,粘贴,复制,粘贴……还有是有很多个格式一样表位于不同工作簿中,需要合并到一个工作表里,需要打开,复制...
  • 转自EXCEL不加班合并多个工作簿,要么借助Excel2016pq,要么借助VBA。鉴于有些人没办法使用pq,今天卢子分享VBA的方法。为了方便演示,文件夹内放4个工作簿,其实即使40个也一样,没啥区别。所有工作簿格式一样...
  • 合并多个Excel数据之VBA代码

    千次阅读 2019-02-13 11:44:18
    1.合并到同一sheet下的VBA代码具体如下: Sub 合并当前目录下所有工作簿全部工作表() Dim MyPath, MyName, AWbName Dim Wb As Workbook, WbN As String Dim G As Long Dim Num As Long Dim BOX As String ...
  • 转自: ... 打开一空白xls, 按Alt+F11 进入宏编辑界面 —> 插入模块, 在右边粘贴...'功能:把多个工作簿的第一个工作表合并到一个工作簿的多个工作表,新工作表的名称等于原工作簿的名称 Sub Books2Sheets()  '定
  • 双击打开汇总文件.xls(当然我们也可以随便新建一excel文档),按ALT+F11打开VBE编辑器,新建一模块,粘贴如下代码:Option ExplicitSub mergeonexls() '合并多工作簿中指定工作表On Error Resume NextDim x As ...
  • Sub 合并当前工作簿下所有工作表() Application.ScreenUpdating = False For j = 1 To Sheets.Count If Sheets(j).Name &amp;lt;&amp;gt; ActiveSheet.Name Then X = Range(“A65536”).End(xlUp).Row...
  • 我们需要把多个excel表都放在同一个文件夹里面,并在这个文件夹里面新建...Sub 合并当前目录下所有工作簿全部工作表() Dim MyPath, MyName, AWbName Dim Wb As Workbook, WbN As String Dim G As Long Dim Num As
  • 今天我们一起来学习如何用VBA快速搞定多个工作簿合并成1个工作簿,让你效率快到飞起来!操作步骤:1、首先将要合并的工作簿放在同一个文件夹内,比如:2、新建一个excel,命名为合并工作簿模板。单击开发工具——...
  • 多个单元格求和,是统计工作中非常普遍的工作,在之前函数讲解过程中,我下了很大气力来讲解SUM函数及其衍生函数,在数组讲解中也讲了此函数在数组中利用,可以说SUM函数在统计工作中起着举足轻重作.....

空空如也

空空如也

1 2 3 4 5 ... 11
收藏数 206
精华内容 82
关键字:

vba合并多个工作表的代码