如何用xlwings将公式自动填充至数据区域最后一行?
用xlwings实现Excel公式动态自动填充到最后一行
问题场景
已将CN6:CY6的带单元格引用公式复制到CN8:CY8,需要将该公式自动填充到B列对应的最后一行(行号通过lastRow动态获取),原代码的AutoFill参数使用错误,无法完成填充。
修正后的代码
import xlwings as xw # 导入Excel自动填充常量,也可直接用数值0代替xlFillDefault from win32com.client.constants import xlFillDefault wb = xw.Book("example.xlsb") sheet = wb.sheets[1] # 重置起始行的格式 sheet.range("CN8:CY8").color = None sheet.range("CN8:CY8").font.color = (0, 0, 0) # 获取B列数据的最后一行行号(基准列可根据实际调整) lastRow = sheet.range(8, 2).end('down').row # 构造填充的起始区域和目标区域 fill_start_range = sheet.range('CN8:CY8') # 目标区域从起始行延伸到CY列的lastRow行 fill_target_range = sheet.range(fill_start_range, f'CY{lastRow}') # 执行自动填充,模拟Excel拖拽效果 fill_start_range.api.AutoFill(fill_target_range.api, xlFillDefault)
关键说明
AutoFill的第一个参数必须是完整目标区域的API对象,不能仅传入行号,需要通过起始区域+结束单元格地址构造完整范围- 如果不想导入
win32com的常量,可直接用0替代xlFillDefault(该常量对应数值为0,代表默认填充规则) lastRow通过B列(第2列)获取,可根据实际数据所在基准列调整列号
内容的提问来源于stack exchange,提问作者Biplab1985
相关产品推荐
相关产品推荐

