遇到Excel自动合并上下内容一样的单元格时,你怎么处理的?---- by.广州组
评论
收藏

遇到Excel自动合并上下内容一样的单元格时,你怎么处理的?---- by.广州组

经验分享
昕怡
2023-09-22 13:08·浏览量:1760
昕怡
发布于 2023-09-22 12:06更新于 2023-09-22 13:081760浏览

      在这之前我是用  选中区域→激活表格鼠标键盘指令快捷键 实现,大家都是怎么做哒?吃瓜群众

      这样做遇到的问题真的有很多,运行速度快表格根本没有反应的过来(加等待是可以避免一些,但不完全解决)......也存在运行实际合并了保存后再打开却显示无效的情况......

      后来用了一点儿小聪明,完美又稳定~分享给大伙儿~有更好的方法欢迎与我沟通交流学习呀~

#定义合并单元格的函数    
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 #列计数器
            ws.merge_cells(col + str(start + start_row) + ":"+col + str(end + start_row))
            start = end + 1
        if i == len(target_list) - 1: #遍历到最后一行,按如下操作
            end = i
            ws.merge_cells(col + str(start + start_row) + ":"+ col + str(end + start_row))


#获取Excel表格中的数据
from openpyxl import load_workbook #用于读取Excel中的信息
wb = load_workbook('产品清单.xlsx')
sheet_names = wb.get_sheet_names()
for sheet_name in sheet_names: #遍历每个工作表,抓取数据,并根据要求合并单元格
    ws = wb[sheet_name]
    customer_list = [] #客户名称
    pn_list = [] #产品编码

    for row in range(6,ws.max_row-2):
        customer = ws['B' + str(row)].value
        pn = ws['C' + str(row)].value
        customer_list.append(customer)
        pn_list.append(pn)
        
    #调用以上定义的合并单元格函数`Merge_cells`做单元格合并操作    
    start_row=6 #开始行是第六行
    Merge_cells(ws,customer_list,start_row,"B") #"B" - 客户名称是在B列
    Merge_cells(ws,pn_list,start_row,"C") #"C" - 产品编码是在C列
        
wb.save("产品清单-合并单元.xlsx")


      这段代码是一个用于合并Excel表格中重复数据的函数。函数名为Merge_cells,它接受四个参数:ws(需要操作的工作表),target_list(含有重复数据的列表),start_row(开始比对数据的行),col(需要处理数据的列)。

      函数的作用是将目标列表中相同的数据所在的单元格进行合并。它通过遍历目标列表,比对相邻的元素是否相同,如果不同则将之前相同的数据所在的单元格进行合并。最后保存合并后的Excel表格。

      代码中使用了openpyxl库来读取Excel中的信息,并遍历每个工作表,抓取数据并调用Merge_cells函数进行单元格合并操作。

      具体的合并操作是通过调用ws.merge_cells方法来实现的,该方法接受一个字符串参数,表示需要合并的单元格范围。

      最后,代码将合并后的Excel表格保存。




  • 测试文档如下:

  • 测试结果如下:

收藏2
全部评论1
最新
发布评论
评论