使用OpenPyXL在Python中写入Excel VLOOKUP公式遇#NAME错误求助
问题解决:OpenPyXL写入VLOOKUP后Excel显示#NAME错误
核心原因
出现#NAME错误是因为Excel无法识别公式中的Table1引用——即便公式文本正确,OpenPyXL写入时未完成名称与Excel表格对象的关联,导致打开文件后Excel无法解析该名称。
解决方法
方法1:改用明确的单元格区域引用
如果Table1只是普通命名区域而非正式Excel表格,直接替换为工作表+单元格范围:
# 替换Sheet1和A1:C100为实际的工作表名称和数据区域 for row in range(2, wrkbook.active.max_row + 1): wrkbook.active[f'B{row}'].value = f'=VLOOKUP(A{row},Sheet1!$A$1:$C$100,2,FALSE)'
方法2:用OpenPyXL创建正式Excel表格并使用结构化引用
如果要保留Table1作为表格名称,需先通过OpenPyXL创建正式的ListObject(Excel表格),再使用结构化引用格式:
from openpyxl.worksheet.table import Table, TableStyleInfo # 1. 创建Table1表格对象(替换A1:C100为实际数据区域) table = Table(displayName="Table1", ref="A1:C100") # 可选:添加表格样式 style = TableStyleInfo(name="TableStyleMedium9", showRowStripes=True) table.tableStyleInfo = style wrkbook.active.add_table(table) # 2. 写入带结构化引用的VLOOKUP公式 for row in range(2, wrkbook.active.max_row + 1): wrkbook.active[f'B{row}'].value = f'=VLOOKUP(A{row},Table1[#All],2,FALSE)'
方法3:确认名称已正确定义
如果Table1是手动创建的命名区域,需确保在工作簿的名称管理器中已正确定义,且OpenPyXL写入公式时名称拼写完全一致(区分大小写)。
内容的提问来源于stack exchange,提问作者JamesWilson
相关产品推荐
相关产品推荐

