使用openpyxl插入含中间数组计算的Excel公式遇问题求助
Python插入含数组计算的Excel公式问题及解决
问题背景
我编写了一个Python脚本,用于清空工作表表格的所有内容,然后在表格单元格中插入一个需要执行多个中间数组计算的Excel公式,但操作过程中遇到了诸多问题。
目标Excel公式
=IF(ISERROR(MATCH([[#This Row],[ID]],Table1[ID],0)),"NEEDS CARD",IF(ISBLANK([[#This Row],[DATE '[Ctrl+;']]]),"INPUT DATE",IF([[#This Row],[DATE '[Ctrl+;']]]>MAX(CHOOSECOLS(FILTER(HSTACK(Table1[ID],Table1[RENEWAL DATE]),Table1[ID]=[[#This Row],[ID]]),2)),"EXPIRED","VALID")))
尝试过程与问题
- 参考相关技术帖子,尝试通过调用表格列数组解决,但出现了*#REF错误*、公式开头
@运算符异常,或是Excel提示工作簿内容存在问题 - 尝试使用
array_formulae属性和ArrayFormula()命令均无效,例如以下简化代码,无论是否保留ArrayFormula(),都会导致Excel提示内容错误:wsmo['B2'] = ArrayFormula("B2",'=MAX(CHOOSECOLS(FILTER(HSTACK(Table1[[#Data],[WM ID]],Table1[[#Data],[RENEWAL DATE]]),Table1[[#Data],[WM ID]]=[[#This Row],[WM ID]]),2))') - 已通过拼接多段字符串处理了公式中的引号和撇号问题,也愿意尝试其他更简便的第三方包实现该功能。
问题解决(更新)
按照建议用7zip打开电子表格并检查XML,确认公式格式正确,之后仅对单个单元格应用ArrayFormula引用,问题成功解决!感谢moken和Charlie Clark!
内容的提问来源于stack exchange,提问作者A Coe
相关产品推荐
相关产品推荐

