当前位置: 首页 > ai >正文

使用xlwings计算合并单元格的求和

有如下一个excel表

表内有合并单元格,现在需要求和,不能直接下拉填充公式怎么办?

通常的办法是先取消合并单元格,计算后,再次合并单元格,比较繁琐。

在此,尝试使用python和xlwings运行直接给出想要的结果。

代码如下:

import xlwings as xwdef fill_missing_departments(data):result = []current_department = Nonefor row in data:if row[0] is not None:current_department = row[0]result.append([current_department, row[1], row[2]])return resultdef sum_salaries_by_department(file_path):# 打开Excel工作簿wb = xw.Book(file_path)sheet = wb.sheets[0]  # 假设数据在第一个sheet中# 获取数据范围data_range = sheet.range('A2:C9').value  # 假设数据在这个范围内print(data_range)# [['财务部', '张三', 4586.0], [None, '清风', 5452.0], ['市场部', '李四', 6589.0], [None, '李白', 8728.0], [None, '青州', 8923.0], ['行政部', '郭靖', 8192.0], [None, '黄蓉', 5968.0], ['企划部', '吴勇', 6728.0]]filled_data = fill_missing_departments(data_range)print(filled_data)# [['财务部', '张三', 4586.0], ['财务部', '清风', 5452.0], ['市场部', '李四', 6589.0], ['市场部', '李白', 8728.0], ['市场部', '青州', 8923.0], ['行政部', '郭靖', 8192.0], ['行政部', '黄蓉', 5968.0], ['企划部', '吴勇', 6728.0]]# 创建部门薪资汇总字典salary_sum = {}for row in filled_data:department = row[0]salary = row[2]if department in salary_sum:salary_sum[department] += salaryelse:salary_sum[department] = salaryprint(salary_sum)# {'财务部': 10038.0, '市场部': 24240.0, '行政部': 14160.0, '企划部': 6728.0}summary_data = salary_sum# 将数据salary_sum写入合并单元格中# 记录哪些部门已经写入,避免写到合并单元格中间written_departments = set()# 从第2行开始遍历(假设第1行为表头)row = 2while True:dept_cell = sheet.range(f"A{row}")dept = dept_cell.valueif dept is None:# 如果整行都为空,说明已经到底了if sheet.range(f"B{row}").value is None and sheet.range(f"C{row}").value is None:breakelse:row += 1continueif dept in summary_data and dept not in written_departments:sheet.range(f"D{row}").value = summary_data[dept]written_departments.add(dept)row += 1# 保存工作簿wb.save()wb.close()my_xlsx_path = '合并单元格的求和.xlsx'
sum_salaries_by_department(my_xlsx_path)

运行后,直接实现了目标

http://www.xdnf.cn/news/3531.html

相关文章:

  • Cesium 环境搭建
  • 组件通信-$attrs
  • 5个实用工具软件详细介绍
  • 多线程基础:线程创建、启动与生命周期管理
  • 【阿里云大模型高级工程师ACP学习笔记】2.9 大模型应用生产实践 (上篇)
  • ESP32 在Platform Arduino平台驱动外部PSAM,进行内存管理
  • 数字智慧方案5846丨智慧广场整体解决方案(91页PPT)(文末有下载方式)
  • mindyolo填坑
  • 应用接入Stripe支付实战【2025版+配置+服务端+客户端+生产级+架构图+代码】
  • 表管理(约束)实验
  • C语言与指针3——基本数据类型
  • Learning vtkjs之TubeFilter
  • TMI投稿指南(四):投稿相关网址
  • 【Linux】Linux基础命令
  • 27.电源和地的单点串并联接线隐患及对EMC的影响分析
  • 数字智慧方案6206丨智慧园区大数据整体解决方案(45页PPT)(文末有下载方式)
  • HDLBIT-程序(Procedures)
  • 【原创开发】无印去水印[特殊字符]短视频去水印工具[特殊字符]支持一键批量解析
  • CloudCompare 中的 KDTree详解
  • 设计模式简述(十六)门面模式
  • DeepSeek构建非农预测模型:量化关税滞后效应与非线性经济冲击传导
  • cPanel 的 Let’s Encrypt™ 插件
  • 平台介绍-开放API接口-鉴权
  • 【C到Java的深度跃迁:从指针到对象,从过程到生态】第五模块·生态征服篇 —— 第二十章 项目实战:从C系统到Java架构的蜕变
  • MATLAB滤波工具箱演示——自定义维度、滤波方法的例程演示与绘图、数据输出
  • 详细说明StandardCopyOption.REPLACE_EXISTING参数的作用和使用方法
  • 虚幻引擎 IK Retargeter 编辑器界面解析
  • 上位机知识篇---PSRAM和RAM
  • 从零开始讲DDR(9)——AXI 接口MIG 使用(2)
  • n8n 键盘快捷键和控制键