跳转到主要内容

02 · 条件单元格

场景

根据行数据让单元格显示不同的值。两种常见形态——从两个值中挑一个的 IF,以及在源值缺失时进行替换的 IFEMPTY

IF — 在两个值中挑一个

{{ IF([续约金额] > 10000, "优先", "普通") }}
{{ IF([区域] = "北京", "本地", "异地") }}
{{ IF([负责人] != "", [负责人], "未指派") }}

比较运算符:=!=><>=<=。第三个参数("else" 分支)是必填的——XTL 没有隐式的空分支。

IFEMPTY — 替换缺失值

{{ IFEMPTY([负责人], "未指派") }}
{{ IFEMPTY([备注], "—") }}

IFEMPTY(value, fallback)value 为空时(缺失、null 或仅含空白字符的字符串)返回 fallback。数字 0false 不算空值——这种场景请用 IF

真值判定规则(IF 的条件)

  • 空值(缺失、仅含空白字符的字符串)被视为假。
  • 字符串 "0""false"真值——它们是非空字符串,仅此而已。如果想把 "0" 当假处理,请显式比较:IF([金额] != "0", ...)
  • 数字 0 和布尔 false 是假。
  • 日期始终为真。

& 拼接派生文本

{{ "等级-" & IF([续约金额] > 10000, "A", "B") & "-" & [区域] }}

& 是字符串拼接运算符。操作数会按标准字符串形式转换(参考 spec/language.md "Canonical String Form")。

备注

  • =!= 遵循 XTL 的比较回退规则——对数字或数字形字符串进行数值比较;对布尔进行布尔比较;对日期进行时间戳比较;其余情况按 Unicode 码点顺序比较。不应用本地化排序。
  • IF 可以嵌套:IF(a, "X", IF(b, "Y", "Z"))。对 Excel 用户来说熟悉,但嵌套过深会很难读——更建议拆出辅助单元格,或在源头预先计算。