02 · 条件单元格
场景
根据行数据让单元格显示不同的值。两种常见形态——从两个值中挑一个的 IF,以及在源值缺失时进行替换的 IFEMPTY。
IF — 在两个值中挑一个
{{ IF([续约金额] > 10000, "优先", "普通") }}
{{ IF([区域] = "北京", "本地", "异地") }}
{{ IF([负责人] != "", [负责人], "未指派") }}
比较运算符:=、!=、>、<、>=、<=。第三个参数("else" 分支)是必填的——XTL 没有隐式的空分支。
IFEMPTY — 替换缺失值
{{ IFEMPTY([负责人], "未指派") }}
{{ IFEMPTY([备注], "—") }}
IFEMPTY(value, fallback) 当 value 为空时(缺失、null 或仅含空白字符的字符串)返回 fallback。数字 0 和 false 不算空值——这种场景请用 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 用户来说熟悉,但嵌套过深会很难读——更建议拆出辅助单元格,或在源头预先计算。