精华内容
下载资源
问答
  • excel表中将工作表合成一个工作表_一个工作薄中的个表格合并成一个新建一个工作表,命名后保存到和与合并的N个文件同一个文件文件夹,按 alt + f11,双击sheet1(sheet1),在右侧的代码区粘贴如下代码。...

    excel表中将多个工作表合成一个工作表_一个工作薄中的多个表格合并成一个

    新建一个工作表,命名后保存到和与合并的N个文件同一个文件文件夹,按 alt + f11,双击sheet1(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("A65536").End(xlUp).Row + 2, 1) = Left(MyName, Len(MyName) - 4)

    For G = 1 To Sheets.Count

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

    Next

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

    Wb.Close False

    End With

    End If

    MyName = Dir

    Loop

    Range("A1").Select

    Application.ScreenUpdating = True

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

    End Sub

    Sub 合并当前工作簿下的所有工作表()

    Application.ScreenUpdating = False

    For j = 1 To Sheets.Count

    IfSheets(j).Name <> ActiveSheet.Name Then

    X =Range("A65536").End(xlUp).Row + 1

    Sheets(j).UsedRange.Copy Cells(X, 1)

    End If

    Next

    Range("B1").Select

    Application.ScreenUpdating = True

    MsgBox "当前工作簿下的全部工作表已经合并完毕!", vbInformation, "提示"

    End Sub

    或者用这个试试

    新建一个空白工作簿,按ALT+F11调出它的VBA窗口,插入一个用户模块,将下面代码粘贴进去。Sub合并工作簿()

    Application.DisplayAlerts=False'关闭提示窗口

    shes=Application.SheetsInNewWorkbook'工作簿中包含工作表数

    Application.SheetsInNewWorkbook=1'生成的新工作簿中只有一个工作表

    Setnewbok=Workbooks.Add'生成新工作簿

    Setnewshe=newbok.Worksheets(1)'新工作表

    s=1'从新工作表的第一行写入数据

    na=Dir("d:\time\*.xls")'需要合并的所有工作表都要事先保存在D盘time文件夹下

    DoWhilena<>""

    Setwb=Application.Workbooks.Open("d:\time\"&na)

    wb.Worksheets(1).UsedRange.Copy'复制数据

    newbok.Activate

    Cells(s,1).Select

    ActiveSheet.Paste'执行粘贴

    s=newshe.UsedRange.Rows.Count+1

    Cells(s,1)=wb.Name'写入数据所属的工作簿名字

    s=s+1

    wb.Close'关闭工作簿

    na=Dir()'取下一个工作簿Loop

    Application.SheetsInNewWorkbook=shes

    Application.DisplayAlerts=True

    Range("a1").Select

    EndSub

    执行这个代码就能快速完成合并工作。

    展开全文
  • 个工作簿单张工作表的合并如下图所示,我们有几个区域的销售数据分别放在不同的工作簿中,每个工作簿内只有一张工作表,每个工作簿的表格结构是一致的,现在我们需要把这些工作簿的表格数据合并到一张工作表中。...

    今天为大家来带的是关于

    多个工作表合并的小技巧,

    相信大家学会了之后

    再遇到需要汇总多个工作表数据的情况时

    可以轻松、高效的解决问题啦!

    话不多说,快往下看看吧!

    ①多个工作簿单张工作表的合并

    如下图所示,我们有几个区域的销售数据分别放在不同的工作簿中,每个工作簿内只有一张工作表,每个工作簿的表格结构是一致的,现在我们需要把这些工作簿的表格数据合并到一张工作表中。

    操作步骤

    1.  选择菜单栏【数据】-【新建查询】-【从文件】-【从文件夹】,在打开的对话框中点击【浏览】,找到存放表格的文件夹后单击【确定】。

    2. 之后会弹出一个界面,展示了选定的文件夹中包含的所有工作簿,单击右下角的的【组合】-【合并和编辑】

    3. 在打开的【合并文件】对话框中,选择要提取的工作表,单击【确定】

    4. 在打开的Power Query编辑器中我们已经可以看到合并后的效果,单击【关闭并上载】,这样就完成了多个工作簿单张工作表的合并。

    ②多个工作簿多张工作表的合并

    如下图所示,各区域的销售数据分布在不同工作簿的多个工作表中,现在要求把所有工作簿中的所有工作表全部合并到一个工作表中。

    操作步骤

    1.  第一步和多个工作簿单张工作表的步骤相同,选择菜单栏【数据】-【新建查询】-【从文件】-【从文件夹】,在打开的对话框中点击【浏览】,找到存放表格的文件夹后单击【确定】

    2. 在弹出的界面中,显示了所选文件夹内的所有工作簿,单击右下角的【编辑】

    3. 在打开的Power Query编辑器中,删除不需要的数据。

    4. 在Power Query编辑器中单击【添加列】-【自定义列】,在弹出的对话框中的【自定义列公式】中输入:

    Excel.Workbook([Content],true),注意该公式需严格区分大小写,单击【确定】

    5. 在Power Query编辑器中可以看到新增加的自定义列,单击自定义列旁的按钮,在弹出的对话框中点击【确定】

    6. 在Power Query编辑器中单击【自定义data】旁的按钮,弹出的对话框中展示了表格的全部字段内容,单击【确认】

    7. 单击【关闭并上载】即完成了多个工作簿多张工作表的合并。

    ·End·

    展开全文
  • 接上篇文章《如何用python实现excel中的vlookup功能?...这篇文章要做的事情,如标题所述,就是提取多张excel上的数据或信息,合并汇总到一张上,这是我们工作中经常会遇到的事情。比如将每...

    接上篇文章《如何用python实现excel中的vlookup功能?》,上篇说到,最近我在做一个小项目,也是用python操作excel解决财务审计工作上的一些问题,以便提高工作效率及其准确性。

    最终目的,刀哥是想做应收账款账龄分析,不知最终能否实现,请大家持续关注。

    这篇文章要做的事情,如标题所述,就是提取多张excel表上的数据或信息,合并汇总到一张新表上,这是我们工作中经常会遇到的事情。

    比如将每月销售情况汇总到一张表上进行销售情况分析,比如将各月发票信息汇总到一张表上进行统计分析,还比如将每月工资表上的某些信息汇总到一张表上进行工资成本分析等等。

    这次,刀哥是要将2017年1-12月、2018年1-12月、2019年1-12月及2020年1-6月各期科目余额表中,所有应收账款的信息,包括科目编码、科目名称、期初余额、借贷方发生额及期末余额,全部提取出来汇总到同一张新表上,并以科目编码升序排列,客户名称及金额与科目编码做到一一对应。

    具体看表即为:

    faa244d7d235e1c74ec79b4d73c8b7ea.png

    70d9041d5f2f8e0a7cd5c57d0fcb1755.png

    9eb7862f2ffea9d447d44848f292af79.png

    92abca67c8a761066c363d0f6a27e415.png

    各期科目余额表截图

    最后得到的新表为:

    1660463a0c615407c0961b17be8e96f6.png

    要实现上述目标,可以分如下四步进行。

    1.

    获取各科目余额表文件路径

    将2017年1-12月、2018年1-12月、2019年1-12月及2020年1-6月各期科目余额表放在同一文件夹下,要读取多少个文件,就把多少个文件全部放在同一个文件夹下,如下图。

    20456da0248e2f2a440489afdea950d4.png

    然后读取所有文件的路径,代码如下。

    1dir_xls = []
    2def get_file(folder_path):  #获取同一文件夹下所有科目余额表各自的文件路径
    3    dir_file = os.listdir(folder_path)
    4    #print(dir_file)  
    5    for path in dir_file:
    6        if path[-4:] == 'xlsx' or path[-3:] == 'xls':
    7            whole_path = r'd:/F:学习/python/账龄分析/科目余额表/{}'.format(path)
    8            dir_xls.append(whole_path)
    9    return dir_xls
    

    2.

    获取各科目余额表中应收账款一级科目编码所在的行列

    比如在2017年科目余额表中,应收账款一级科目编码为“1122”,其所在的单元格为C12,也即为第12行第3列,这里的行号12、列号3,即为其定位。

    75dc1f47a1686cdc10c3e5126b2e060d.png

    其余科目余额表同理,均为获取一级科目编码“1122”的行号和列号,获取代码如下。

     1dict_row_col = {}
     2def get_row_col(dir_xls):  #获取每一张表中应收账款一级科目编码所在的行号和列号
     3    for i in dir_xls:
     4        #print(i)
     5        account_balance_sheet_data = pd.DataFrame(pd.read_excel(i))
     6        for a in account_balance_sheet_data.index:
     7            for b in range(len(account_balance_sheet_data.loc[a].values)):
     8                if account_balance_sheet_data.loc[a].values[b] == '1122':
     9                    row = a+1
    10                    col = b+1
    11                    dict_row_col[i] = [row,col]
    12    return dict_row_col
    

    3.

    获取各科目余额表中应收账款所有二级科目编码

    根据获取到的应收账款一级科目编码行号和列号,即根据其定位,再获取每一张表中应收账款所有二级科目编码,并将其不重复且升序排列添加到一张新表中,代码如下。

     1def get_ar_code(dict_row_col):
     2    i = 0
     3    ar_list1 = []
     4    ar_list2 = []
     5    for key in dict_row_col.keys():
     6        workbook = xlrd.open_workbook(key)
     7        balance_sheet = workbook.sheet_by_index(0)
     8        row = dict_row_col[key][0]
     9        col = dict_row_col[key][1]
    10        while True:
    11            if '1122' in balance_sheet.cell_value(row+1,col-1):
    12                ar_code = balance_sheet.cell_value(row+1,col-1)
    13                if ar_code not in ar_list1:
    14                    ar_list1.append(ar_code)
    15                else:
    16                    pass                
    17                row = row+1                
    18            else:
    19                break
    20    ar_list1.append('科目编码')    
    21    ar_list1.sort(reverse=False) #科目编码列表升序排列
    22    #将“科目编码”从最后一个元素整体移动到第一个元素
    23    ar_list2.append(ar_list1[len(ar_list1)-1]) 
    24    for i in range(1,len(ar_list1)):
    25        ar_list2.append(ar_list1[i-1])
    26    #将所有元素写入到excel表中
    27    for i in range(len(ar_list2)):
    28        ar_sheet.write(i,0,ar_list2[i])
    

    得到的新表内容如下。

    08400dbcae16a2348538f5c15db1db37.png

    由上可看出,2017年至2020年1-6月,四张科目余额表,应收账款共有617个二级科目,对应着617个不同的客户。

    4.

    根据二级科目索引获取全部所需信息

    此步的操作过程,即上一篇《如何用python实现excel中的vlookup功能?》所分享的过程,这里就不再详述了,代码如下。

     1def get_ar_info(dict_row_col):
     2    #读取导入目标表
     3    file_target = r'd:F:学习python账龄分析AR.xls'
     4    list_ar_code = []
     5    workbook = xlrd.open_workbook(file_target)
     6    balance_sheet = workbook.sheet_by_index(0)
     7    rows = balance_sheet.nrows
     8    for i in range(1,rows):
     9        list_ar_code.append(balance_sheet.cell_value(i,0))
    10    #print(list_ar_code)
    11    data = {'科目编码':list_ar_code}
    12    df_target = pd.DataFrame(data)
    13
    14    for key in dict_row_col.keys():
    15        #读取原始数据来源表
    16        file_source = key
    17        df_source = pd.read_excel(file_source)
    18        #将原始数据来源表及导入目标表信息合并到同一表上
    19        dfneed = df_source[['科目编码','科目名称','期初借方','期初贷方','本期发生借方','本期发生贷方','期末借方','期末贷方']]
    20        df_target = pd.merge(df_target,dfneed,how='left',on='科目编码')
    21    df_target.to_excel(file_target,index=False)
    

    5.

    最终目标实现

    前四步即为封装的四个函数,每个函数为其中一个步骤,最终汇总可以实现此文总体目标,调用代码及运行代码如下。

     1import os
     2import pandas as pd
     3import xlrd,xlwt
     4
     5folder_path = r'd:F:学习python账龄分析科目余额表'
     6f = xlwt.Workbook()
     7ar_sheet = f.add_sheet(u'ar_sheet',cell_overwrite_ok=True)
     8dir_xls = get_file(folder_path)
     9dict_row_col = get_row_col(dir_xls)
    10get_ar_code(dict_row_col)
    11f.save(r'd:F:学习python账龄分析AR.xls')
    12get_ar_info(dict_row_col)
    

    运行后生成的表格如下。

    957aa10090a8105853ff4c827896cedc.png

    再经过简单整理后,便可得出上文最终表格,至此实现了从多张excel表中提取所需数据或信息并汇总到同一张新表上的目的。

    写的很匆忙,不知道表述清楚没有,如有疑问,请找刀哥交流。

    如何实现账龄分析目标,那就是刀哥下次要分享的内容了,敬请期待,记得点个赞同和收藏哦。

    学习python,刀哥正在路上,你要一起来吗?欢迎加入刀哥python学习交流群,来一起撸代码吧。

    展开全文
  • 代码详解:1.Sub main()——其中Sub 跟括号是固定的,main是宏名,可以随便更改(其实完全没有必要多此一举,这里可以不做任何修改)2.For Each sh In Sheets——这是遍历全部的工作表,这里就要注意,如果你的工作表...

    代码详解:

    1.Sub main()——其中Sub 跟括号是固定的,main是宏名,可以随便更改(其实完全没有必要多此一举,这里可以不做任何修改)

    2.For Each sh In Sheets——这是遍历全部的工作表,这里就要注意,如果你的工作表中包含一些,不需要汇总数据的工作表,那么就需要将源数据表备份一份,然后将不需要汇总数据的工作表都删除掉,只剩下总表以及需要汇总数据的工作表(当然,还有其他办法,这里只讲解最简单地做法)

    3.If sh.Name <> "总表" Then——这里是判断工作表的名字是不是”总表“,如果是总表,就不汇总数据,本例中总表的名字就是”总表“,如果你的工作表中,总表名字是其他的,就将这里的”总表“改为你的工作总表明细;

    4.i = sh.Range("D65536").End(3).Row——这里要注意了"D65536",是为了获得最后一个不为空的行的行号,这里用了D列,因为本例中的D列是有数据的,在实际的使用过程中,一定要选择一个最后一行有数据的列,否则不能获得最大行号(假如只有2列,那么这里的D可以改为B或者A)

    5.k = Range("A65536").End(3).Row——这里是获得总表的最大行号,以便复制的数据,能够依次往下粘贴;(这里的A65536跟上面提到的是一个道理,总表中的A列最后一行不是空的)

    6.sh.Range("A2:D" & i).Copy Range("A" & k + 1)——这里要注意“A2:D”&i是要复制的区域,因为本例中只有A-D列,而且数据是从第2行开始的,所以这里是A2:D,那假如是从E列第10行开始,到Z列结束的区域,就应该改为E10:Z;

    Range("A" & k + 1)——这里是从总表的A列开始粘贴,假如是从D列开始,那么这里的A改为D即可

    7.End If   Next   End Sub——这些是结束判断、继续循环和程序结束,都不需要更改。

    展开全文
  • 如何将多张excel表格合成一张朋友!你可以使用access 把你的excel 数据全部 导入 其中 然后就可以 用追加记录的方式 合并了,要比excel 操作方便许多……excel工作簿内多个子表格怎么全部合并成一张整的表格?以WPS ...
  • 由于各种需要,我们往往会需要把多张表格中的数据内容合并成一张表格,那么应该怎么操作呢?我们以下为例:下图中Sheet1是2011年的数据,sheet2是2012年的数据,最后要把它们合并在一张上,如果客户和商品相同,...
  • 然后我们把下面这些宏计算的代码复制进去,然后找到工具栏上面的“运行”下的“运行子过程/用户窗体”,代码如下,如图所示:Sub 合并当前目录下所有工作簿的全部工作表()Dim MyPath, MyName, AWbNameDim Wb As ...
  • Excel表格是我们在工作中经常用到的一个软件,是汇总数据的好帮手,一些用户会问,那应该怎么把很个excel表格合并在一张表里面呢?其实方法很简单,今天小编就教大家个excel合并成一个的方法。具体操作步骤...
  • excel表中将工作表合成一个工作表_一个工作薄中的个表格合并成一个新建一个工作表,命名后保存到和与合并的N个文件同一个文件文件夹,按 alt + f11,双击sheet1(sheet1),在右侧的代码区粘贴如下代码。...
  • 本内容来源于@什么值得买APP,观点仅代表作者本人 ...足以可见,Excel的技能不仅会影响到你的工作效率,还会影响到你的升职加薪。那么,怎么才能快速入门呢?废话不说,我们接着讲吧。界面对于一款软件来说,熟悉...
  • 参考一下这个稍微修改一下就可以用了注意看注释你建立一个表格然后放一个command按钮命名CommandButton1在表格的文件夹里建立一个文件夹叫"快速汇总工作簿"在这个表格里放几个Excel文件然后点这个按钮看看效果...
  • 是解决如何合并大量不同的工作表哒。多少张都没问题!亲测有效!分为以下两种情况☟01 合并同一工作簿的不同工作表。效果长这样:本来,同一工作簿下,一个排班表是一张sheet;接下里,就变成:所有排班表汇总成一...
  • 使用Navicat一次性导入个数据

    千次阅读 2020-03-02 17:05:45
    如果一个个往Navicat导入,很耽误时间,可以把这些表合成一个总表,这些内容作为里面的sheet,然后使用Navicat将这些表导入mysql。具体步骤如下: 一:建立一张总表,将上述表格作为sheet放入其中 二:使用...
  • 把七零八碎的数据拼凑在一起1、问题:现在有两学生的信息,如何合成一张表呢?这个在Python里面只需要使用merge函数便可以实现。import pandas as pdimport matplotlib.pyplot as plt#读Excel工作簿中两张表的...
  • Python玩转Excel:实现多表联合

    千次阅读 2020-05-26 13:27:50
    现在有两学生的信息,如何合成一张表呢? 这个在Python里面只需要使用merge函数便可以实现。 import pandas as pd import matplotlib.pyplot as plt #读Excel工作簿中两张表的数据,数据如上图 students = pd....
  • 把七零八碎的数据拼凑在一起1、问题:现在有两学生的信息,如何合成一张表呢?这个在Python里面只需要使用merge函数便可以实现。import pandas as pdimport matplotlib.pyplot as plt#读Excel工作簿中两张表的...
  • 一个地区一张表打开华南区的,复制】-打开汇总-【粘贴】再打开华北区的【复制】-打开汇总-【粘贴】……类似的工作任务还真不少各个单位上交的报名各部门的生产计划数据各个月的销售数据怎么汇总到一张表...
  • 问题:现在有两学生的信息,如何合成一张表呢?这个在Python里面只需要使用merge函数便可以实现。import pandas as pdimport matplotlib.pyplot as plt#读Excel工作簿中两张表的数据,数据如上图students = pd....
  • 问题:现在有两学生的信息,如何合成一张表呢?这个在Python里面只需要使用merge函数便可以实现。import pandas as pdimport matplotlib.pyplot as plt#读Excel工作簿中两张表的数据,数据如上图students = pd....
  • 项目总结

    2011-03-14 14:52:00
    1.权限个应用系统合成一个系统一个应用系统对应个功能点而功能点和菜单相对应 功能点主键跟 菜单 相对应角色跟功能点相对应 关联出一张表角色角色跟岗位相对应 关联出一张表岗位岗位分配在对应部门的下面...
  • Excel新增工具集

    2011-12-20 09:30:27
    1、个工作簿中的表导入到一个工作簿中的多工作表:将同一文件夹下的各工作簿中所有的非空工作表合并到当前工作簿中,各新建工作表仍保持原工作簿中的原工作表内容不变。新建工作表的命名有两种方式:一种是以...
  • 老板:你今天加个班我:好呀好呀老板:我有几个Excel,需要你把它们合成一张表我:好呀好呀老板:给!你自己看着办吧! 我怀着忐忑的心情打开了一个神秘的压缩包: 912个CSV表格,每个表格共370列,约360行...
  • 认真听课、思考问题、动手操作、有问题一定要问、参与讨论、帮组同学 五、 体系结构 oracle的体系很庞大,要学习它,首先要了解oracle的框架。oracle的框架主要由物理结构、逻辑结构、内存分配、后台进程...
  • 2) 零件工作图两(A3) 3) 设计说明书一份(6000~8000字)。 本组设计数据: 第三组数据:运输机工作轴转矩T/(N.m) 690 。 运输机带速V/(m/s) 0.8 。 卷筒直径D/mm 320 。 已给方案:外传动机构为V带传动。...
  • 10.1.3把多张VCD光盘合成一张DVD光盘 10.2自制DVD刷集光盘 10.2.1专业DVD标题制作 ——DVDArchitect4.0 10.2.2自制珍藏版N合1DVD剧集光盘 10.3自制MiniDVD 10.3.1CD的容量,DVD的画质 ——MiniDVD 10.3.2自制MiniDVD...
  • Java范例开发大全 (源程序)

    热门讨论 2011-04-27 07:47:22
     实例128 个小文件合成一个文件 181  实例129 统计指定文件中的字符个数 183  实例130 对象的序列化与反序列化 185  实例131 同时显示个文件 187  实例132 生成zip压缩文件 189  实例133 解压缩zip...
  • java范例开发大全源代码

    热门讨论 2011-10-30 23:31:51
     实例128 个小文件合成一个文件 181  实例129 统计指定文件中的字符个数 183  实例130 对象的序列化与反序列化 185  实例131 同时显示个文件 187  实例132 生成zip压缩文件 189  实例133 解压缩...
  • java范例开发大全

    2013-03-08 20:06:54
    实例128 个小文件合成一个文件 181 实例129 统计指定文件中的字符个数 183 实例130 对象的序列化与反序列化 185 实例131 同时显示个文件 187 实例132 生成zip压缩文件 189 实例133 解压缩zip文件 192 实例134 ...
  • Java范例开发大全(全书源程序)

    热门讨论 2013-04-05 11:50:26
    实例128 个小文件合成一个文件 181 实例129 统计指定文件中的字符个数 183 实例130 对象的序列化与反序列化 185 实例131 同时显示个文件 187 实例132 生成zip压缩文件 189 实例133 解压缩zip文件 192 实例...

空空如也

空空如也

1 2
收藏数 35
精华内容 14
关键字:

多张工作表合成一张