前言:

大家好,这里是Seon塞翁。当你收集了 n 个人的 EXCEL 记录表,需要将它们汇成一个总表时你会怎么做呢?如果不通过技术手段,要一个个打开再复制粘贴也太麻烦了吧!此时就需要一个通过几秒钟的点击就能完成合并的工具。

文章目录

  • 一、合并 EXCEL
    • 1、VBA 实现合并
    • 2、Python 实现合并
  • 二、拆分 EXCEL
    • 1、VBA 实现拆分
    • 2、Python 实现拆分

一、合并 EXCEL

1、VBA 实现合并

不套路,下面直接放出 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
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("B200000").End(xlUp).Row + 2, 1) = Left(MyName, Len(MyName) - 4)
For G = 1 To Sheets.Count
Wb.Sheets(G).UsedRange.Copy .Cells(.Range("B200000").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

看不懂没关系,不用再学 VBA,直接跑就完事儿了。那么该如何使用呢?

如下目录中放着 3 个待合并的 EXCEL 表,每个表中数据不同;

新建一个 EXCEL 文件后打开它,用于存放合并后的数据;

通过快捷键 Alt + F11 打开 VBA 界面;

打开Sheet1,将上面的代码复制粘贴到其中,按 F5 运行;

即将同目录下其他 3 个 EXCEL 文件中的数据合并至此;

办公自动化有着各种各样的手段,下面让我们来看看万能的 Python 又是如何实现这个功能的。

2、Python 实现合并

直接上代码,说明见注释:

def merge_excel(dir):print('--- 执行合并 ---')filename_excel = [] # 存表名frames = [] # 存表内容d = dir.replace('/','\\\\') # 因pandsa读取路径为双斜杠,需转换if d.endswith('\\\\') == False: # 若为磁盘根目录则路径结尾自带\\,若为文件夹则无,需添加\\d = d + '\\\\'print("路径是:",d,"\n有以下文件:")for files in os.listdir(path=dir): # 遍历目录下的文件print(files)if 'xlsx' in files or 'xls' in files : # 搜索xlsx/xls后缀文件filename_excel.append(files)  df = pd.read_excel(d+files) # 读取一个表内容存入一个DataFrameframes.append(df)if len(frames)!= 0: # 若存在EXCEL表则合并保存result = pd.concat(frames) # 上下连接多个dfresult.to_excel(d+"合并结果表.xlsx")merge_excel("D:/某文件夹")

二、拆分 EXCEL

分久必合,合久必分(这句话不是这么引用的吧)。那么如果是要分配工作,比如把一个大表按行数分成多份小表该如何实现呢?我们还是先来看看 VBA 版本。

1、VBA 实现拆分

Sub ChaiFenSheet()Dim r, c, i, WJhangshu, WJshu, bt As Longr = Range("A" & Rows.Count).End(xlUp).Rowb = InputBox("请输入分表行数")If IsNumeric(b) ThenWJhangshu = Int(b)ElseMsgBox "输入错误", vbOKOnly, "错误"EndEnd Ifc = Cells(1, Columns.Count).End(xlToLeft).Columnbt = 1 '标题行数'WJhangshu = 50 '每个文件的行数WJshu = IIf(r - bt Mod WJhangshu, Int((r - bt) / WJhangshu), Int((r - bt) / WJhangshu) + 1)'------Set fs = CreateObject("Scripting.FileSystemObject") 'For i = 0 To WJshuWorkbooks.AddApplication.DisplayAlerts = FalseActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\" & Format(i + 1, String(Len(WJshu), 0)) & "." & fs.GetExtensionname(ThisWorkbook.FullName)   '扩展名Application.DisplayAlerts = TrueThisWorkbook.ActiveSheet.Range("A1").Resize(bt, c).Copy ActiveSheet.Range("A1")ThisWorkbook.ActiveSheet.Range("A" & bt + i * WJhangshu + 1).Resize(WJhangshu, c).Copy _ActiveSheet.Range("A" & bt + 1)ActiveWorkbook.Close TrueNext
End Sub

与合并表类似,先打开要拆分的大表,按 Alt + F11 进入 VBA 界面,再按 F5 运行代码即可。如下图所示,将一个表中的 15 个任务拆分到了 3 个新的表中

2、Python 实现拆分

拆分部分的源码由笔者的同事 yang 编写:

def split_excel(path,num):# print("--- 执行拆分 ---")p = path.replace('/', '\\\\') # 传入pd库read_excel方法的路径,含文件名dir = p[ : p.rfind('\\') + 1 ] # 输出被拆分表的目录,不含文件名sheetname = path[ path.rfind('/') + 1 :].strip('.xlsx').strip('.xlx') # 无后缀的文件名data = pd.read_excel(p) # 数据nrows = data.shape[0]  # 获取行数split_rows = num # 自定义要拆分的条数,即分隔成多少行一份count = int(nrows/split_rows) + 1  # 拆分的份数# print("应当拆分成%d份"%count)begin = 0end = 0for i in range(1,count+1):sheetname_temp = sheetname+str(i)+'.xlsx' # 拆分后的每个表名if i == 1:end = split_rowselif i == count:begin = endend = nrowselse:begin = endend = begin + split_rowsprint(sheetname_temp)data_temp = data.iloc[ begin:end , : ] # [ 行范围 , 列范围 ]data_temp.to_excel(dir + sheetname_temp)# print('拆分完成')split_excel("test.xlsx",5)

作为 PyQt5 和画图爱好者,笔者又把这两段代码丢进界面里打包成一个小玩意儿,exe 文件的图标是笔者绘制的字母 X 和 L 的组合画(因为 XL 速读即为 EXCEL ),合并和拆分功能图标也很形象(一本正经的卖瓜 自夸)。可执行程序和完整源码已上传 github (←点击),欢迎下载使用!

谢谢阅读!

用Python把它做出来:EXCEL文件合并/拆分工具 (含VBA版)相关推荐

  1. excel文件合并小工具

    文章目录 前言 一.基本思路 二.编码实现 三.使用测试 界面如图所示 功能测试 前言 写这个小工具的原因是因为在工作中需要将两个excel里面的数据合并一个新的文件,起初尝试通过WPS进行合并,但是 ...

  2. python处理多个excel文件-Python将多个excel文件合并为一个文件

    利用Python,将多个excel文件合并为一个文件 思路 利用python xlrd包读取excle文件,然后将文件内容存入一个列表中,再利用xlsxwriter将内容写入到一个新的excel文件中 ...

  3. python合并两个excel文件_Python将多个excel文件合并为一个文件

    利用Python,将多个excel文件合并为一个文件 思路 利用python xlrd包读取excle文件,然后将文件内容存入一个列表中,再利用xlsxwriter将内容写入到一个新的excel文件中 ...

  4. 利用Python将多个excel文件合并为一个文件

    利用Python,将多个excel文件合并为一个文件 思路 利用python xlrd包读取excle文件,然后将文件内容存入一个列表中,再利用xlsxwriter将内容写入到一个新的excel文件中 ...

  5. Python使用openpyxl模块读写excel文件

    Python使用openpyxl模块读写excel文件 openpyxl是一个用于写入和读取xlsx格式的excel文件的Python模块. excel2010后的后缀名为xlsx,不再是xls,使用 ...

  6. python实现图书管理系统——通过excel文件或者TXT文件存放数据

    用python实现图书管理系统--通过excel文件或者TXT文件存放数据 话不多说,先上图,看看运行起来的效果: 由上图可知,我实现的主要功能: 用户注册 用户登录 添加图书 查询图书 删除图书 修 ...

  7. 如何利用python整合excel_Python将多个excel文件合并为一个文件

    Python将多个excel文件合并为一个文件 这篇文章主要为大家详细介绍了Python将多个excel文件合并为一个文件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 思路 利用python x ...

  8. python导入excel文件-python使用xlrd模块读写Excel文件的方法

    本文实例讲述了python使用xlrd模块读写Excel文件的方法.分享给大家供大家参考.具体如下: 一.安装xlrd模块 到python官网下载http://pypi.python.org/pypi ...

  9. python处理多个excel文件-python多个excel文件合并成一个sheet

    运营人员需要历年的订单数据,这就需要把多个文件夹下面的excel文件合并到一个sheet中,之前的解决的办法是用VBA把多个excel文件合并成一个表的多个sheet,再把多个sheet合并成一个sh ...

最新文章

  1. 怎么才能最短时、高效、踏实地学习 Python(附链接)
  2. 如何像技术高手一样解决问题
  3. 用SQL语句添加删除修改字段及一些表与字段的基本操作 .
  4. 南京信息工程大学c语言真题,南京信息工程大学C语言试题库.doc
  5. android tabhost黑色背景,android更改FragmentTabHost背景和文本颜色
  6. 生物计算机科学家,科学家开发细胞计算机 人体就是一台大型计算机
  7. JQuery常用方法一览【转】
  8. java反编译工具Java Decompiler
  9. webgl点光源的漫反射
  10. abab的四字成语_abab的四字词语成语
  11. 在不被限制的前提下,企业微信一天加多少好友(主动+被动)
  12. webassembly介绍
  13. ros学习记录1 Hello World 使用c++
  14. 第327场周赛6284. 使字符串总不同字符的数目相等
  15. 进程间通信 [3] —— 信号SIGNAL、信号量SEMAPHORE
  16. 10bit为什么比8bit节省带宽
  17. C# 金额大写转小写
  18. 苹果icloud登录_怎么取消iCloud云上贵州运营的扣费
  19. MySQL查询近7天、1年、5年内数据,无数据部分补0
  20. Redis在多线程高并发下出现数据错乱问题

热门文章

  1. 深度学习 图像分割开源代码(附链接,超级全)
  2. 计算最高分,最低分,平均分
  3. 一款免安装、多平台兼容的 拾色器(Color Picker)
  4. docker提交比赛记录
  5. 如何升级Vue的版本 vue2.9.6升级到vue3.0
  6. c语言实现注册页面窗口,C语言控制台程序实现的注册登录
  7. 论文的主要观点怎么写?
  8. html图片点击左右滑动效果,基于jquery实现点击左右按钮图片横向滚动
  9. python3.5项目升级3.8问题汇总
  10. 阳光,无论清浅或明媚