openpyxl中使用AND条件设置条件格式不生效如何解决
openpyxl 条件格式AND逻辑不生效问题解决
写法错误点
核心错误是公式参数分隔符不符合规范:
- openpyxl写入Excel公式时遵循标准英文公式语法,函数多参数必须用**英文逗号
,**分隔。你代码中AND的两个判断条件用了分号;,这是部分地区本地化Excel界面的显示分隔符,不属于公式存储的标准语法,openpyxl无法正确解析,最终导致条件格式规则失效。 - 引用逻辑提示:你当前使用的
P2、BB2是相对引用,和P2:BA2的应用范围是匹配的——规则作用到Q2、R2等范围内其他单元格时,第一个判断条件会自动偏移为当前单元格值>0,第二个条件判断同行BB列单元格值>0。如果需要固定锚定BB2单元格做判断,给引用加绝对定位符即可,写成$BB$2。
正确配置代码
将公式内的分号替换为英文逗号即可正常生效,修正后代码如下:
sheet.conditional_formatting.add( 'P2:BA2', FormulaRule(formula=['AND(P2>0, BB2>0)'], fill=fill_red) )
注:如果你本地打开生成的Excel,发现条件格式里的公式显示为分号分隔是正常现象,是Excel根据你系统区域设置自动做的显示转换,不影响实际规则运行。
内容的提问来源于stack exchange,提问作者Ryszard Eggink
相关产品推荐
相关产品推荐

