You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用openpyxl批量写入带不同单元格引用的Excel公式?

实现方案

原有错误代码的核心问题:

  • 不需要遍历列字母,你固定写入列为T列,仅需动态遍历行号即可
  • 公式内的行号未跟随循环动态变化,且错误赋值给sheet['sheet name'],没有定位到目标单元格

直接循环实现代码

# 遍历2到6行,range左闭右开所以结束值写7
for row_num in range(2, 7):
    # 动态拼接单元格位置和公式内的行号
    sheet[f'T{row_num}'] = f'=IF(J{row_num} = "L", 1, 0)'

# 写入完成后保存文件
wb.save('你的目标文件.xlsx')

封装为可复用函数

支持自定义文件、工作表、行列范围、判断条件,灵活适配不同场景:

import openpyxl
from openpyxl import load_workbook

def batch_write_formula(file_path: str, sheet_name: str, write_col: str, judge_col: str, start_row: int, end_row: int, judge_val: str):
    # 加载工作簿和工作表
    wb = load_workbook(file_path)
    sheet = wb[sheet_name]
    # 批量写入公式
    for row_num in range(start_row, end_row + 1):
        sheet[f'{write_col}{row_num}'] = f'=IF({judge_col}{row_num} = "{judge_val}", 1, 0)'
    # 保存修改
    wb.save(file_path)

# 调用示例
if __name__ == '__main__':
    batch_write_formula(
        file_path = '你的Excel文件路径',
        sheet_name = '你要操作的工作表名',
        write_col = 'T',
        judge_col = 'J',
        start_row = 2,
        end_row = 6,
        judge_val = 'L'
    )

补充说明

  • 若不知道目标范围的最大行号,可以用sheet.max_row直接获取工作表当前有效数据的最大行,无需手动指定end_row
  • 保存路径和原文件路径一致时会直接覆盖原文件内容,测试阶段建议先备份原文件,或另存为新文件

内容的提问来源于stack exchange,提问作者Kajin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.12 15:24:02