![2f6fb26ec609a40cac7b624e57c82403.png](https://i-blog.csdnimg.cn/blog_migrate/0df02b117dee4643fd5f4172fc090cb4.jpeg)
从汇总统计的角度,合并单元格非常不友好。单元格一旦合并,使用数据透视表,分类汇总都无法得到正确的结果。所以,对于原始数据,最好别随意合并单元格。但在日常的工作中,部分Excel打印档要求将某列上下内容相同的单元格合并,以便看起来清爽。比如下面这样的表格:
![f70c53977ece1c2223a676fa8fc8a326.png](https://i-blog.csdnimg.cn/blog_migrate/027e4eb56b4a78edfac44096b9cce6fb.jpeg)
老板一般会要求在打印之前将B,C列上下相邻单元格内容相同的合并成如下这样的:
![86ebfd0558338138e1d776991ee6ccb1.png](https://i-blog.csdnimg.cn/blog_migrate/a6a83545de78e830073a07d2a964f3c4.jpeg)
如果表格少,一个一个手动合并也未尝不可,但若遇到大量的表格,就得做好手软的准备了。现在用Python,一键批量处理Excel工作簿中的所有工作表的单元格合并,解放您的手指。
#定义合并单元格的函数
def Merge_cells(ws,target_list,start_row,col):
'''
ws: 是需要操作的工作表
target_list: 是目标列表,即含有重复数据的列表
start_row: 是开始行,即工作表中开始比对数据的行(需要将标题除开)
col: 是需要处理数据的列
'''
start = 0 #开始行计数,初试值为0,对应列表中的第1个元素的位置0
end = 0 #结束行计数,初试值为0,对应列表中的第1个元素的位置0
reference = target_list[0] #设定基准,以列表中的第一个字符串开始
for i in range(len(target_list)): #遍历列表
if target_list[i] != reference: #开始比对,如果内容不同执行如下
reference = target_list[i] #基准变成列表中下一个字符串
end = i - 1 #列计数器