如何引用其他工作表运算符动态构建Excel条件公式?
解决Excel动态运算符条件判断的问题
你要把原公式里硬写的比较运算符换成引用单元格的动态运算符,之前用&或TEXTJOIN拼接公式失败,是因为Excel不会自动把拼接出来的文本当成可执行公式来运行。下面给你两种靠谱的实现方案:
方案一:用SWITCH/IF嵌套做逻辑判断(无宏、兼容性强)
这种方法直接通过函数判断单元格里的运算符类型,生成对应的逻辑条件,不用拼接公式。假设你要引用的运算符在'Common For All'!A134(对应原公式的>)和'Common For All'!C134(对应原公式的<),修改后的公式如下:
=IF( AND( SWITCH('Common For All'!A134, ">", C42>'Common For All'!B134, "<", C42<'Common For All'!B134, ">=", C42>='Common For All'!B134, "<=", C42<='Common For All'!B134, "=", C42='Common For All'!B134, FALSE), SWITCH('Common For All'!C134, ">", C42>'Common For All'!D134, "<", C42<'Common For All'!D134, ">=", C42>='Common For All'!D134, "<=", C42<='Common For All'!D134, "=", C42='Common For All'!D134, FALSE) ), 'Common For All'!H134, 0 )
要是你的Excel版本不支持SWITCH(比如2019及更早版本),可以换成IF嵌套写法:
=IF( AND( IF('Common For All'!A134=">",C42>'Common For All'!B134,IF('Common For All'!A134="<",C42<'Common For All'!B134,IF('Common For All'!A134=">=",C42>='Common For All'!B134,IF('Common For All'!A134="<=",C42<='Common For All'!B134,IF('Common For All'!A134="=",C42='Common For All'!B134,FALSE))))), IF('Common For All'!C134=">",C42>'Common For All'!D134,IF('Common For All'!C134="<",C42<'Common For All'!D134,IF('Common For All'!C134=">=",C42>='Common For All'!D134,IF('Common For All'!C134="<=",C42<='Common For All'!D134,IF('Common For All'!C134="=",C42='Common For All'!D134,FALSE))))) ), 'Common For All'!H134, 0 )
方案二:用定义名称+EVALUATE(支持任意运算符,需手动定义)
如果需要支持更多运算符(比如<>),可以用EVALUATE函数结合定义名称实现动态公式解析:
- 点击「公式」选项卡 →「定义名称」,设置:
- 名称:
Condition1 - 引用位置:
=EVALUATE("C42"&'Common For All'!A134&"'Common For All'!B134")
- 名称:
- 再定义第二个名称:
- 名称:
Condition2 - 引用位置:
=EVALUATE("C42"&'Common For All'!C134&"'Common For All'!D134")
- 名称:
- 最终使用的公式:
=IF(AND(Condition1,Condition2),'Common For All'!H134,0)
注意:EVALUATE是旧版宏表函数,必须通过定义名称使用,保存文件时需要启用宏(或存为.xlsm格式)。
内容的提问来源于stack exchange,提问作者user3020047
相关产品推荐
相关产品推荐

