Excel VBA如何编写不依赖本地语言的通用公式?
Excel多语言版本通用公式编写方案
方法1:VBA中使用Formula属性而非FormulaLocal属性
这是最常用的解决方案,VBA的Formula属性统一使用英文函数名、英文逗号作为参数分隔符,不管用户Excel是什么语言版本,都会自动转译为对应本地语言的公式正常运行。
示例代码:
' 直接写入英文公式即可,Excel自动适配本地语言 Range("目标单元格地址").Formula = "=NOT(AND($L1>360,$K1<45))"
注意:
Formula属性中参数分隔符固定用英文逗号,不要使用分号,Excel会自动根据本地设置替换为对应分隔符。
方法2:使用无函数的纯运算公式彻底规避翻译问题
如果不想依赖VBA属性适配,也可以把逻辑函数转化为通用的布尔运算表达式,完全不需要调用函数,所有语言版本Excel都可以直接识别:
原公式逻辑为「不是L列大于360且K列小于45」,等价于「L列小于等于360 或者 K列大于等于45」,转化后的通用公式为:=($L1<=360)+($K1>=45)>0
原理:Excel中布尔值TRUE等价于1、FALSE等价于0,两个条件相加只要有一个成立结果就≥1,判断大于0即可得到和原公式完全一致的结果,全程没有调用任何需要翻译的函数。
注意事项
如果你之前是用FormulaLocal属性写入公式,该属性要求使用和Excel本地语言一致的函数名和分隔符,就会出现不同语言版本不兼容的问题,替换为Formula属性即可解决。
内容的提问来源于stack exchange,提问作者Ernte1893
相关产品推荐
相关产品推荐

