使用xlwings写入动态数组公式时出现@或被{}包裹的问题
解决xlwings写入动态数组公式出现@或{}的问题
直接使用formula属性替代formula_array,同时确保公式以=开头即可解决:
sheet.range('A9').formula = '=IFERROR(SORT(FILTER(\'Fwd Data\'!B:P,\'Fwd Data\'!A:A=TRUE),2,-1),"NO RESULTS FOUND WITHIN THESE THRESHOLDS")'
原因说明
在新版Office 365中,动态数组公式默认支持溢出行为,formula_array是为旧版Excel数组公式设计的API,会自动给公式添加{}包裹;而@符号是Excel的隐式交集运算符,当Excel判定公式应该返回单值却返回数组时会自动插入。使用formula属性写入符合动态数组规范的公式,Office 365会自动识别并处理溢出逻辑,无需额外标记。
原问题相关代码片段
用户原代码中存在问题的公式写入逻辑:
# 原问题代码 sheet.range( 'A9').formula_array = '=IFERROR(SORT(FILTER(\'Fwd Data\'!B:P,\'Fwd Data\'!A:A=TRUE),2,-1),"NO RESULTS FOUND WITHIN THESE THRESHOLDS")'
期望写入的目标公式:
=IFERROR(SORT(FILTER('Fwd Data'!B:P,'Fwd Data'!A:A=TRUE),2,-1),"NO RESULTS FOUND WITHIN THESE THRESHOLDS")
内容的提问来源于stack exchange,提问作者Kingston
相关产品推荐
相关产品推荐

