中企动力 > 商学院 > 如何合并多个excel文件
  • ?

    EXCEL多个工作簿快速合并到一个工作表,一键搞定!

    惑色

    展开

    快到年底了,有小伙伴提出了如何快速将12个月的数据合并到一个工作表问题,比如将每个月不同销售员不同产品的销售数据汇总到一个工作表。今天我们就来分享一个快速将多个结构相同的工作簿数据汇总到一个工作表的方法,快速简单,一键搞定,提问的小伙伴速来围观!

    一、如下数据源,我们需要将12个月的产品销售数据工作簿合并到一个工作表中。

    二、效果展示

    三、实现步骤

    1、导入VBA模块:新建一个EXCEL汇总表,将sheet1更名为“汇总表”,删除其余的工作表,按ALT+F11 调出VBA 编辑器 →在工程窗口右击选择【导入文件】→选择VBA 模块文件(快速合并工作表和工作簿.bas)→关闭VBA 编辑器。导入后可以从【开发工具】→【宏】处看到“合并工作簿”和“合并工作表”两个宏。

    2、制作一键"合并工作簿"和一键"合并工作表"按钮。插入矩形,输入文字“合并工作簿”并调整文字颜色大小和对齐方式等,然后复制一个矩形,并将文字改为“合并工作表”。选中文字为“合并工作簿”的矩形,右键→指定宏→选择宏“合并工作簿”,选中文字为“合并工作表”的矩形,右键→指定宏→选择宏“合并工作表”。

    3、合并1至12月的12个工作簿数据到1个工作表。单击“合并工作簿”,首先选择需要合并的所有工作簿,点【打开】,将12个月的销售表合并到EXCEL汇总表。然后复制标题行到汇总表的第一行,再单击“合并工作表”,所有工作表即汇总到汇总表中了。

    我是EXCEL学习微课堂,分享EXCEL学习的小技巧,小经验。如一键合并工作表如果分享的内容对您有用,欢迎点赞、收藏、评论、转发,更多的EXCEL技能,可以关注“EXCEL学习微课堂”。 需要一键快速合并多个工作簿到工作表原文件和VBA代码的,请评论转发后私信联系我或留下您的邮箱!

  • ?

    一个简单的公式搞定Excel多工作簿合并

    好孤独

    展开

    如果是针对多工作簿,而且工作簿存在多个工作表,该如何合并?

    一个文件夹内有多个工作簿

    一个工作簿中含有多个工作表

    现在要将格式相同的所有表格合并在一张表格中,如果采用最原始的复制粘贴是多么恐怖的一件事。模拟的数据只是几个工作簿,而实际工作可能有几十个,光复制粘贴,手都废了。

    而对于高手,编写一段VBA代码也要花1小时,有没适合普通人的简单办法?

    有!不过前提是你安装了Excel2016。

    Excel2016只需要一个简单的公式就可以搞定。

    Step 01关闭打开的工作簿,新建一个新工作簿。单击数据→新建查询→从文件→从文件夹。

    Step 02浏览到指定的文件夹,单击确定。

    Step 03单击编辑。

    Step 04单击添加列→自定义列,输入自定义列公式,确定。注意:字母区分大小写,必须保持一致。

    =Excel.Workbook([Content])

    Step 05单击自定义的扩展按钮,确定。

    Step 06单击自定义.Data的扩展按钮,确定。

    Step 07这样默认就将需要合并的列全部选择,右键删除其他列。

    Step 08将第一行用做标题。

    Step 09取消多余的标题筛选。

    Step 10关闭并上载。

    这样就合并成功。

    因为有一些人第一次接触,所以我在截图的时候比较详细。这样看起来步骤就很多,熟练以后,实际上操作起来很快,1、2分钟就搞定。

  • ?

    如何把几个excel表格的内容合并到同一个表格里面?

    wwwxcomcn

    展开

    把几个excel表格的内容,合并到同一张表格里面,如何操作?看小编给你演示。

    第一步:把需要合并的表格放在同一个文件夹里面,然后再新建一个excel,如图:

    第二步:打开“新建Excel2007”,鼠标右键单击Sheet1,选择“查看代码”并打开进去。

    第三步:将下列代码粘贴进代码栏:

    Sub 合并当前目录下所有工作簿的全部工作表()

    Dim MyPath, MyName, AWbName

    Dim Wb As Workbook, WbN As String

    Dim G As Long

    Dim Num As Long

    Dim BOX As String

    Application.ScreenUpdating = False

    MyPath = ActiveWorkbook.Path

    MyName = Dir(MyPath & "\" & "*.xls")

    AWbName = ActiveWorkbook.Name

    Num = 0

    Do While MyName <>""

    If MyName <> AWbName Then

    Set Wb = Workbooks.Open(MyPath & "\" & MyName)

    Num = Num + 1

    With Workbooks(1).ActiveSheet

    .Cells(.Range("B65536").End(xlUp).Row + 2, 1) = Left(MyName, Len(MyName) - 4)

    For G = 1 To Sheets.Count

    Wb.Sheets(G).UsedRange.Copy .Cells(.Range("B65536").End(xlUp).Row + 1, 1)

    Next

    WbN = WbN & Chr(13) & Wb.Name

    Wb.Close False

    End With

    End If

    MyName = Dir

    Loop

    Range("B1").Select

    Application.ScreenUpdating = True

    MsgBox "共合并了" & Num & "个工作薄下的全部工作表。如下:" & Chr(13) & WbN, vbInformation, "提示"

    End Sub

    第四步:点击菜单栏的“运行”、“运行子子过程/用户窗体”,等待几秒后提示合并完成,点击确定。如图:

    完成,这样就把3个表格的内容合并到同一张表格里面。

    好了,如果觉得小编文章不错,欢迎关注、点赞、收藏。

  • ?

    Excel如何用VBA自动合并同目录下的多个excel工作簿文件

    于夜柳

    展开

    在excel的使用过程中,有时候我们需要将同目录下有着相同标题的多个excel工作簿合并到一个excel工作簿中,比如下面这种情况,5个年级的学生名单合并到一个表里面去。

    常用的做法是手工打开每个文件,复制粘贴到学生名单汇总一个表里去。

    这里介绍一个偷懒的方法,用VBA代码自动合并。代码分4段,第1段是主代码,后面3段是自定义函数。建议把代码复制粘贴到个人工作簿的模块里,方便调用。打开学生名单汇总.xlsx ALT+F8运行该代码。

    以下是具体代码,复制粘贴

    Sub 同目录下合并多个excel工作簿()

    'On Error Resume Next '// 发生错误,自动执行下一句,就是忽略错误

    Application.ScreenUpdating = False '//关闭屏幕刷新

    Application.DisplayAlerts = False '//关闭系统提示

    t = Timer '//开始时间

    Set SH0 = ActiveWorkbook.Worksheets(1)

    SH0.Cells.Clear '//清空保存区域,全部数据第一行是标题行,且只占一行,无合并单元格

    ARR = FileAllArr(ActiveWorkbook.Path, "*.xlsx", ActiveWorkbook.Name, False) '//详见函数说明

    SHName = "sheet1" '//要求所有工作簿内需要统计的工作表名称相同,

    For i = 0 To UBound(ARR)

    Str_coon = "Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties='Excel 12.0;HDR=yes';data source=" & ARR(i) '//Excel2007

    ' Str_coon = "Provider=Microsoft.JET.OLEDB.4.0;Extended Properties='Excel 8.0;HDR=yes';data source=" & & ARR(I) '//OFFICE2003,根据情况选择

    StrSQL = "SELECT *,'" & GetPathFromFileName(ARR(i), False) & "' AS 来自工作簿 FROM [" & SHName & "$]" '//SQL语句自己发挥吧,这里是精髓。

    IROW = SH0.Range("A1048576").End(3).Row + 1

    If IROW <= 2 Then

    IROW = 1

    Crr = GET_SQLCoon(StrSQL, Str_coon, True) '//第一次,带上标题

    Else

    Crr = GET_SQLCoon(StrSQL, Str_coon, False)

    End If

    SH0.Range("A" & IROW).Resize(UBound(Crr, 1) + 1, UBound(Crr, 2) + 1) = Crr '//粘贴查询结果

    Next

    Application.ScreenUpdating = True '//恢复屏幕刷新

    Application.DisplayAlerts = True '//恢复系统提示

    MsgBox "汇总用时:" & Format(Timer - t, "#0.0000") & " 秒", , "北极狐提示!!" '//提示所用时间

    End Sub

    Rem 下面是为方便整理的自定义函数,上面的代码执行必不可少哟!!

    '*******************************************************************************************************

    '功能: 查找指定文件夹含子文件夹内所有文件名或文件夹名(含路径)

    '函数名: FileAllArr

    '参数1: Filename 需查找的文件夹名 不含最后的"\"

    '参数2: FileFilter 需要过滤的文件名,可省略,默认为:[*.*]

    '参数3: Liwai 剔除例外的文件名,可省略,默认为:空,一般为:ThisWorkbook.Name

    '参数4: Files 是否只要文件夹名,可省略,默认为:FALSE

    '返回值: 一个字符型的数组

    '使用方法:arr = FileAllArr(ThisWorkbook.Path, "*.xls", ThisWorkbook.Name,false)

    '*******************************************************************************************************

    Public Function FileAllArr(ByVal Filename As String, Optional ByVal FileFilter As String = "*.*", Optional ByVal Liwai As String = "", Optional ByVal Files As Boolean = False) As String()

    Set Dic = CreateObject("Scripting.Dictionary") '创建一个字典对象

    Set Did = CreateObject("Scripting.Dictionary")

    Dic.Add (Filename & "\"), ""

    i = 0

    Do While i < Dic.Count

    Ke = Dic.keys '开始遍历字典

    MyName = Dir(Ke(i), vbDirectory) '查找目录

    Do While MyName <>""

    If MyName <> "." And MyName <> ".." Then

    If (GetAttr(Ke(i) & MyName) And vbDirectory) = vbDirectory Then '如果是次级目录

    Dic.Add (Ke(i) & MyName & "\"), "" '就往字典中添加这个次级目录名作为一个条目

    End If

    End If

    MyName = Dir '继续遍历寻找

    Loop

    i = i + 1

    Loop

    Dim arrx() As String

    i = 0

    If Files = True Then '//是否只输出文件夹名

    For Each Ke In Dic.keys '以查找总表所在文件夹下所有excel文件为例

    ReDim Preserve arrx(i)

    If Ke <> Filename & "\" Then '//自身文件夹除外

    arrx(i) = Ke

    i = i + 1

    End If

    Next

    FileAllArr = arrx

    Else

    For Each Ke In Dic.keys '以查找总表所在文件夹下所有excel文件为例

    MyFileName = Dir(Ke & FileFilter) '过滤器:EXCEL2003为:*.xls,excel2007为:*.xlsx

    Do While MyFileName <>""

    If MyFileName <> Liwai Then '排除例外文件

    ReDim Preserve arrx(i)

    arrx(i) = Ke & MyFileName

    i = i + 1

    End If

    MyFileName = Dir

    Loop

    Next

    FileAllArr = arrx

    End If

    End Function

    '****************************************************************

    '*'****************************************************************************************************

    '函数: GetPathFromFileName 根据全路径获得文件名

    '参数1:strFullPath 完整路径

    '参数2:kzm true 返回字符串含扩展名

    '参数3:strSplitor 各级文件夹分隔符

    '作用: 从完整路径获取返回: 文件名(true带扩展名)

    '使用方法: msgbox GetPathFromFileName("C:\windows\text.txt",true)

    '*'****************************************************************************************************

    Public Function GetPathFromFileName(ByVal strFullPath As String, Optional ByVal kzm As Boolean = True, Optional ByVal strSplitor As String = "\") As String

    Dim FileName1 As String

    Dim FNAME As String

    FileName1 = Left$(strFullPath, InStrRev(strFullPath, strSplitor, , vbTextCompare))

    FileName1 = Replace(strFullPath, FileName1, "")

    If kzm = False Then

    GetPathFromFileName = Left(FileName1, InStr(FileName1, ".") - 1)

    Else

    GetPathFromFileName = FileName1

    End If

    End Function

    '*'****************************************************************************************************

    '*****************************************************************************************

    '函数名: GET_SQLCoon

    '函数功能: 获得指定SQL的查询结果,自定义连接字符串,可以连接各种数据库

    '返回值: 返回一个二维数组

    '参数1: StrSQL 字符类型 SQL查询语句

    '参数2: Str_coon 字符类型 数据库连接语句

    '参数3: Biaoti 可参数选 是否输出标题,默认带有标题

    '使用方法: Arr = GET_SQLCoon(StrSQL,Str_coon,true)

    ' Arr(0,1) '//数组第一行为标题行,从i=1 开始是数据

    ' Sh2.Range("A2").Resize(UBound(ARR, 1) + 1, UBound(ARR, 2) + 1) = ARR

    '*****************************************************************************************

    Public Function GET_SQLCoon(ByVal StrSQL As String, ByVal Str_coon As String, Optional Biaoti As Boolean = True) As Variant()

    On Error Resume Next ' 改变错误处理的方式。

    Dim Cn, RS

    Err.Clear

    Set Cn = CreateObject("Adodb.Connection") '//新建一个ADO连接

    Set RS = CreateObject("adodb.recordset")

    Cn.Open Str_coon

    RS.Open StrSQL, Cn, 1, 3

    If RS.RecordCount > 0 Then '//如果找到数据

    If Biaoti = True Then

    ReDim ARR(0 To RS.RecordCount, 0 To RS.Fields.Count - 1)

    For a = 0 To RS.Fields.Count - 1 '//导入标题

    ARR(0, a) = RS.Fields(a).Name

    Next

    For i = 0 To RS.RecordCount - 1 '//导入数据

    For a = 0 To RS.Fields.Count - 1

    ARR(i + 1, a) = RS.Fields(a).Value

    Next a

    RS.MoveNext

    Next

    Else

    ReDim ARR(0 To RS.RecordCount - 1, 0 To RS.Fields.Count - 1)

    For i = 0 To RS.RecordCount - 1 '//导入数据

    For a = 0 To RS.Fields.Count - 1

    ARR(i, a) = RS.Fields(a).Value

    Next a

    RS.MoveNext

    Next

    End If

    Else '//如果没有找到数据

    ReDim ARR(1, 1)

    ARR(0, 0) = ""

    End If

    GET_SQLCoon = ARR

    Cn.Close '//关闭ADO连接

    Set RS = Nothing

    Set Cn = Nothing '//释放内存

    End Function

    '*****************************************************************************************

  • ?

    合并多个Excel文件,不管什么版本的Excel或WPS都适用

    黎如松

    展开

    昨日,分享了使用Power Query插件快速合并多个Excel的方法,可惜很多朋友表示还没用上Excel2016。所以,今天分享一个新方法,不管什么版本的Excel,或者WPS表格,都适用。

    实例

    将一个部门所有人半年的销售数据合并到一份Excel文件中。

    思路

    我们想获取单元格A1的内容,就会输入公式“=A1”;如果要获取Sheet1下的A1内容,就会输入“=Sheet1!A1”;如果要获取的在“解晴.xlsx”文件下,就会输入“='D:\数据\[解晴.xlsx]Sheet1'!A1”。基于此,我们可以不用打开Excel文件,便轻松合并多个Excel。

    步骤1:提取Excel文件名称

    在命令提示符中输入“dir /b Excel文件所在路径”获取所有Excel文件的名称,复制名称到一个空白Excel工作表中。然后复制A列所有的名称,选中“B1:H8”区域,按“Ctrl + V”粘贴,这样“A-H”列都粘贴上了Excel文件名。

    为什么是“A-H”列呢,因为原数据就是这样的。

    步骤2:Excel名称转换成一列

    复制“A-H”列数据粘贴到Word文档中,选择“只保留文本”,然后使用“文本转表格”工具转换成一列数据的表格。

    步骤3:创建辅助表,获取源数据单元格地址

    将一列的Excel名称粘贴到汇总表的A列,在“B-I”列输入“A1-H8”,即要合并的Excel文件中数据的单元格地址。

    复制“B1-I8”数据,然后在输入栏左侧的名称中输入“B9:I40”,按Enter键选中这块区域,最后按“Ctrl + V”粘贴,效果同步骤1。

    步骤4:输入公式,连接Excel文件名和数据地址

    J1公式:="t='D:\数据\["&$A1&"]Sheet1'!"&B1

    公式中的“D:\数据\”是Excel文件路径,“Sheet1”是要合并的Excel文件中的工作表名称。

    公式输入后,向右填充,直到结果显示“H1”为止。然后选中这些公式,双击填充所有的公式。

    步骤5:粘贴为数值,然后将文本公式转换成真正的公式

    复制步骤4的结果,选择性粘贴为数值。然后将“t=”替换为“=”。

    所有Excel文件的内容就都合并到一起啦。

    看起来似乎有点复杂,但其实很容易,只要稍微理解一下整个的思路就好了。

    方法优点:

    不限Excel版本和 wps版本,比Power Query灵活。可用于合并多个工作表。想提取几行或几列都可以,取决于你在创建辅助表时,输入了多少单元格地址。本例中的“A1-H1”是标题行,创建辅助表时,删除“A1-H1”,就不会多次提取到标题了。

    谢谢阅读,每天学一点,省下时间充实自己。欢迎点赞、评论、关注和点击头像。

  • ?

    Excel用Power Query把文件夹下所有文件合并为一个与合并多个表格

    刘藏今

    展开

    在 Excel Power Query 未出来之前,把文件夹下所有文件合并为一个与合并同一工作表中的多个工作表,需要用 VBA 实现,比较麻烦。有了 Power Query 后,不用再写代码,直接用它就可以合并一个文件夹(可包含子文件夹)下所有的 Excel 文件与一个 Excel 文档中所有 Sheet。用 Power Query 合并文件,主要是通过查询导入的办法实现,以下就是它们的具体操作方法,实例中操作所用版本均为 Excel 2016。

    一、Excel用Power Query把多个工作表Sheet合并到一个工作表

    1、选择“数据”选项卡,单击“新建查询”,在弹出的菜单中依次选择“从文件”→ 从工作簿,打开“导入数据”窗口,定位到要合并的Excel文件所在的文件夹,双击要合并的文件(如 Power Query合并多个工作表),则弹出提示正在连接文件小窗口,连接完成后,打开“导航器”窗口,勾选“选择多项”,依次勾选“1月至6月”6个工作表,单击右下角的“加载”,打开“查询编辑器”窗口,选中左边的“1月”,单击“表格图标”,在弹出的菜单中选择“追加查询”,打开“追加”窗口,单击下拉列表框,在弹出的选项中选择“2月”,则把工作表“2月的数据”添加到“1月的数据”后面;同样方法添加“3月至6月的数据”,添加完成后,单击“查询编辑器”左上角的“关闭并上载”,在弹出的菜单中选择“关闭并上载”,则“1月至6月的数据”添加到 Excel 文档中;操作过程步骤,如图1所示:

    提示:当从 Excel 文件导入数据时,在最后一步把数据添加到 Excel 文档时,可能会弹出“初始化数据源失败”的提示,单击“确定”即可。

    2、在“查询编辑器”窗口,追加合并数据时,除可以从“表格图标”选择“追加查询”外,还可以直接选择窗口右上角的“追加查询”,如图2所示:

    图2

    3、如果合并的工作表中有重复记录,把数据添加到一个表(如“1月”)后,可以单击“表格图标”,在弹出的菜单中选择“删除重复项”,如图3所示:

    图3

    二、Excel用Power Query把多个文件合并成一个文件,仅把 Sheet 添加到工作薄并未合并数据

    1、单击“数据”选项卡下的“新建查询”,依次选择“从文件”→ 从工作薄,打开“导入数据”窗口,定位到要合并的Excel文件所在的文件夹,双击要合并的文件(如 Power Query 合并查询),则所选文件导入到“导航器”窗口,勾选“选择多项”,依次勾选“Sheet1 和 Sheet2”,单击“编辑”,打开“查询编辑器”窗口,单击窗口右上角的“新建源”,在弹出的菜单中依次选择“文件””→ Excel,再次打开“导入数据”窗口,同样定位要合并文件所在文件夹,双击要导入文件(如 Power Query合并多个工作表),打开“导航器”窗口,再次勾选“选择多项”,并依次选择“1月至6月”六个工作表,单击“确定”,返回“查询编辑器”窗口,单击“关闭并上载”,在弹出的菜单中选择“关闭并上载”,则两个 Excel 文件的8个工作表合并到一个 Excel 文件中;操作过程步骤,如图4所示:

    2、以上演示了把两个 Excel 文件合并为一个文件,如果要把更多的 Excel 文件合并为一个文件,只需在“查询编辑器”窗口重复选择“新建源”,选择 Excel 文件即可。

    三、Excel用Power Query把同一文件夹下所有文件合并成一个文件,文件夹下可包含子文件夹

    1、选择“数据”选项卡,单击“新建查询”,依次选择“从文件”→ 从文件夹,打开“文件夹”窗口,单击“浏览”,打开“浏览文件夹”窗口,定位到要合并的 Excel 文件所在的父文件夹,选择要合并的 Excel 文件所在文件夹,单击“确定”,打开“查询编辑器”窗口;选中第三列,按住 Shift,再选中第八列,右键选中的列,在弹出的菜单中选择“删除列”,把它们删除;选择“添加列”选项卡,单击“添加自定义列”,打开“添加自定义列”窗口,在“自定义列公式”下输入 =Excel.Workbook([Content]),单击“确定”;返回“查询编辑器”窗口,选中 Custom 列,单击 Custom 右边的双箭头图标,在打开的小窗口中,不勾选“使用原始列名作为前缀”,单击“确定”;单击 Custom.Data 列选中它,再单击 Custom.Data 右边的双箭头图标,在打开的窗口中,勾选“使用原始列名作为前缀”,单击“确定”;把第一至第四列和后三列删除;选择“开始”选项卡,单击“关闭并上载”,在弹出的菜单中选择“关闭并上载”,则所选文件夹下的全部 Excel 文件合并到一个文件;操作过程步骤,如图5所示:

    2、提示:在“自定义列公式”下输入的公式 =Excel.Workbook([Content]),是区分大小写,注意不要输错。

    四、Excel Power Query 不显示“多项选择”的原因及解决方法

    1、Power Query 要求浏览器版本在 ie9 以上;另外,如果浏览设置了不显示图片,即没有勾选“显示图片”,如图6所示:

    图6

    2、“导航器”中的“选择多项”前的复选框与“查询编辑器”中列字段右边的双箭头图标都不显示,图7是“导航器”中的“选择多项”前的复选框未显示的情况:

    图7

    3、只要勾选了 ie 中的“显示图片”,它们就会显示,因此,遇到窗口显示不正常的情况不要忘了查看 ie 是否为 9 以上版本与是否勾选了显示图片。

  • ?

    如何将多个Excel文件合并成一个且保留原有数据?

    廖羊青

    展开

     如何将多个Excel文件合并成一个且保留原有数据?事实上,我们可以借用Excel宏命令来处理该操作,并且保留原有数据,建立多个Sheet页,具体操作请看下文多个Excel文件合并成一个的方法。

      如何将多个Excel文件合并成一个且保留原有数据?

      1、将需合并的Excel文件放在同一个文件夹中,并这个文件中新建一个Excel文件。

      2、打开新建的Excel文件,按 Alt + F11 键,打开宏,选择视图→代码窗口。

      3、将下面的代码拷贝进去:

    Sub sheets2one() '定义对话框变量 Dim cc As FileDialog Set cc = Application.FileDialog(msoFileDialogFilePicker) Dim newwork As Workbook Set newwork = Workbooks.Add With cc If .Show = -1 Then Dim vrtSelectedItem As Variant Dim i As Integer i = 1 For Each vrtSelectedItem In .SelectedItems Dim tempwb As Workbook Set tempwb = Workbooks.Open(vrtSelectedItem) tempwb.Worksheets(1).Copy Before:=newwork.Worksheets(i) newwork.Worksheets(i).Name = VBA.Replace(tempwb.Name, ".xls", "") tempwb.Close SaveChanges:=False i = i + 1 Next vrtSelectedItem End If End With Set cc = Nothing End Sub

      4、点击运行选项运行宏命令。

      5、之后弹出选择对话框,选择要批量合并的Excel名,确定即可。

      6、程序运行完毕后,会自动生成一个工作簿,工作簿内包含所有需合并的Excel文件,将工作簿另存为即可。

      以上步骤便是,合并后的Excel文档会献出多个Sheet页,我们可以很方便的切换了解。

  • ?

    Excel技巧:多个相同excel表格如何合并到一起!

    粱以松

    展开

    从事互联网行业的小编们,经常会遇到一个问题,就是导出多个Excel表格数据,经常是多个数据合并到一个excel表格里来做数据分析,那么如何快速的合并excel表格呢?

    1、把所有excel文件放在同一个文件夹里。如下图:

    2、打开汇总excel,并右键单击sheet1,找到“查看代码”,单击进去。进去之后就看到了宏计算界面。如图所示:

    3、然后我们把下面代码复制进去,然后找到工具栏上面的“运行”下的“运行子过程/用户窗体”,代码如下,如图所示:

    Sub 合并当前目录下所有工作簿的全部工作表()Dim MyPath, MyName, AWbNameDim Wb As Workbook, WbN As StringDim G As LongDim Num As LongDim BOX As StringApplication.ScreenUpdating = FalseMyPath = ActiveWorkbook.PathMyName = Dir(MyPath & "\" & "*.xls")AWbName = ActiveWorkbook.NameNum = 0Do While MyName <> ""If MyName <> AWbName ThenSet Wb = Workbooks.Open(MyPath & "\" & MyName)Num = Num + 1With Workbooks(1).ActiveSheet.Cells(.Range("B65536").End(xlUp).Row + 2, 1) = Left(MyName, Len(MyName) - 4)For G = 1 To Sheets.CountWb.Sheets(G).UsedRange.Copy .Cells(.Range("B65536").End(xlUp).Row + 1, 1)NextWbN = WbN & Chr(13) & Wb.NameWb.Close FalseEnd WithEnd IfMyName = DirLoopRange("B1").SelectApplication.ScreenUpdating = TrueMsgBox "共合并了" & Num & "个工作薄下的全部工作表。如下:" & Chr(13) & WbN, vbInformation, "提示"End Sub

    运行几十秒钟就OK啦!如果表格数据过多的话,时间会久一点。

  • ?

    WPS Excel: 如何合并多个Excel文件

    欧阳志勇

    展开

    合并多个表格文件,Excel中可以使用power query,WPS中可以使用数据透视表来完成,两者各有优缺点。

    例如,有下面3个表格,表格的标题行中有部分内容相同。怎样合并这样的3个文件呢?

    步骤1:将这3个文件存放到同一个文件夹下(很重要),随意打开一个文件(例如01.xlsx),再新建一个空白表格文件。

    步骤2:在空白表格文件中,插入数据透视表,选择“使用多重合并计算区域”——“选定区域”——“创建单页字段”——“下一步”。

    步骤3:用鼠标选取01.xlsx文件中所有的数据,点击“添加”,就会在“所有区域”看到该数据区域;接着一一选取其他文件区域。

    文件很多的话,这一步也是很麻烦的。可以使用BAT命令先将文件重命名成类似的名字,这样选取了第一个表格数据之后,后面的数据就不需要打开表格选取,而是直接修改文件名字。每个表格中的数据不同,在添加区域时,可以将区域设置的大一些,例如使用“$1:$4”(表示表格前4行)。

    步骤4:数据选取完毕,就可以点击“确认”键创建一个新的数据透视表,会看到如下的汇总结果。界面中部的数据就是各个文件中的原始数据。

    步骤5:还可以将筛选器下的“页1”拖到行字段下,这样我们就会看到界面左侧有“项1”、“项2”和“项3”,分别对应步骤3所添加的文件啦。

    步骤6:如果某个原始表格中的数据变更了,可以在汇总表格上右键一下,点击“刷新”,汇总表数据也会随之更新。

    和Excel的Power Query相比:

    1. Excel中操作更简单一些,不过也只有Excel2016以上的版本才支持。

    2. Excel的power query合并表格文件时,要求每个表格中的工作表名称相同,列数也必须相同,否则合并后数据会有遗漏或差错;使用数据透视表则没有这个限制。

    3. 如果表格中列标题相同、行标题不相同,使用Excel的power query则不能合并;使用数据透视表则可以合并。

    4. 原始数据更新时,两者都可以同步更新。

    5. 数据透视表合并原始数据的同时还能汇总数据。

    谢谢阅读,欢迎点赞、评论、关注和点击头像。

  • ?

    如何将多个Excel文件或工作表合并成一个

    蒋芷文

    展开

    应用场景1

    老板:小王啊,调查一下大家对我们人事部的服务有什么意见或建议没。小王:好的。

    小王做好一份Excel调查表模板,分发下去。然后收到了100份结果文件。

    应用场景2

    老板:小王啊,还有5分钟我就要开会了,我们12家门店的销售情况表汇总到一起了吧。

    小王应该怎么合并这些Excel文件?一个一个复制到手软吗?

    合并多个Excel文件

    第一步:将所有的Excel调查表文件存放在同一个文件夹下。打开一个空白Excel文件,点击“新建查询”,选择“从文件夹”中导入,然后粘贴所有Excel调查表所在路径。

    第二步:在“组合”下拉菜单中选择“合并和编辑”。

    第三步:选中要合并的工作表。

    第四步:点击Power Query编辑器中的“关闭并上载”。

    稍等片刻,所有的文件就都合并到同一个工作表啦。

    可以看到表头的两行重复显示了很多遍。使用定位或筛选功能,删除多余的行即可。

    当然,也可以在上述步骤4“关闭并上载”之前删除一些行。

    更新数据

    小王好开心,100份Excel调查表就这么轻松地合并到一起了。小丽:小王,我的调查表修改了一下,发一份新的给你吧。小王……

    小王,莫急,直接在原来的文件夹下替换小丽的调查表,然后在合并后的汇总表上,右键一下,点击“刷新”即可。

    合并多个Excel工作表

    和合并excel文件类似,用Power Query同样可以快速完成。

    第一步:打开一个空白Excel文件,点击“新建查询”,选择“从工作簿”中导入,然后打开需要汇总的Excel文件。

    第二步:选中所有要合并的工作表名称,然后点击“编辑”。

    第三步:按照图示的步骤,点击“追加查询”,然后将所有的工作表添加进来。

    最后点击“关闭并上载”,所有工作表内容就合并到一个工作表下啦。同样的,如果原始的表格数据更新,在汇总表上刷新一下即可同步更新数据。

    注意:以上步骤都基于Power Query插件,Excel2016才支持。使用低版本的Excel或WPS的朋友请查考明日的文章。

    相关阅读:《多个word文档怎么合并》。

    谢谢阅读,每天学一点,省下时间充实自己。欢迎点赞、评论、关注和点击头像。

如何合并多个excel文件

所有视频需要登录后,才能观看

请先登录您的帐号,即可完整播放,如果您尚未注册帐号,请先点击注册。

img

在线咨询

建站在线咨询

img

微信咨询

扫一扫添加
动力姐姐微信

img
img

TOP