使用openpyxl计算同工作簿非Sheet1工作表I4单元格平均值并写入Sheet1
使用openpyxl实现自动计算多工作表平均值的脚本
刚好做过类似的需求,给你整了个开箱即用的openpyxl脚本,完美适配你的场景——不用写死工作表名称,不管后续工作表总数怎么变,每季度跑一次都能正常工作:
from openpyxl import load_workbook # 替换成你的工作簿实际路径 workbook_path = "你的目标文件.xlsx" # 加载工作簿(必须设置read_only=False才能写入修改) wb = load_workbook(workbook_path) # 存储所有有效I4单元格的数值 sensor_values = [] # 遍历工作簿内所有工作表 for sheet_name in wb.sheetnames: # 跳过用来保存结果的Sheet1 if sheet_name == "Sheet1": continue current_sheet = wb[sheet_name] cell_data = current_sheet["I4"].value # 只收集数值类型数据,避免空值、文本导致计算报错 if isinstance(cell_data, (int, float)): sensor_values.append(cell_data) # 计算平均值,同时处理无有效数据的极端情况 if sensor_values: average_result = sum(sensor_values) / len(sensor_values) else: average_result = "无有效数值数据" # 也可以设为0,根据需求调整 # 将结果写入Sheet1,这里默认用A1做表头、A2存结果,可自行修改单元格位置 result_sheet = wb["Sheet1"] result_sheet["A1"] = "所有Sensor类工作表I4单元格平均值" result_sheet["A2"] = average_result # 保存修改后的工作簿 wb.save(workbook_path) print(f"计算完成!平均值已写入Sheet1,结果为:{average_result}")
关键细节说明:
- 动态适配工作表数量:通过
wb.sheetnames自动获取所有工作表名称,完全不依赖固定表名,新增多少个Sensor类工作表都能自动识别 - 容错防崩溃:加入数值类型判断,遇到空值、文本等非数值内容时会自动跳过,不会直接报错终止脚本
- 灵活调整输出位置:默认把结果写到Sheet1的A2单元格,你可以根据需求修改单元格坐标(比如改成B5、C3等)
- 季度复用友好:只要工作簿路径不变,每季度直接运行脚本就行,完全不用调整核心逻辑
内容的提问来源于stack exchange,提问作者ThisGuyUsesPowershell
相关产品推荐
相关产品推荐

