公式示例¶
公式以 = 开头。客户端预览结果,服务器在写入前重新计算并验证。
一次性赋值
模型字段保存计算结果,不会建立持续依赖。展示用计算列请使用 sheet_computed_fields。
常用公式¶
| 目标 | 公式 |
|---|---|
| 涨价 7% | =ROUND([price]*1.07,2) |
| 九折优惠 | =ROUND([price]*0.9,2) |
| 库存金额 | =[price]*[stock] |
| 根据库存设状态 | =IF([stock]>0,"ready","order") |
| 替换 NULL | =IFNULL([note],"无备注") |
| 名称转大写 | =UPPER([name]) |
| 提取年份 | =YEAR([available_on]) |
| 当前加载价格之和 | =SUM(price) |
| 处理除法错误 | =IFERROR([price]/[stock],0) |
字段必须存在且用户可见,状态值需符合字段的 choices。
原始行值¶
[price] 读取原始价格,因此将 =[price]*1.07 赋给价格不会形成循环。1200.00 变为 1284.00。批量操作中的所有赋值也基于原始数据,与赋值顺序无关。
单元格引用¶
| 引用 | 含义 |
|---|---|
B7 |
第七个已加载行、第二个可见数据列 |
$B$7 |
复制时固定行和列 |
B$7 / $B7 |
固定行 / 固定列 |
B1:B20 |
当前快照内的区域 |
位置引用会读取待保存的更改。越界返回 #REF!,循环返回 #CYCLE!。即使在后续页,B7 仍表示该页第七行。
计算列¶
sheet_computed_fields = {
"inventory_value": "=[price]*[stock]",
"availability": '=IF([stock]>0,"有货","待订货")',
}
计算列只读,当前版本不支持服务器端筛选和排序。
聚合与精度¶
SUM、AVG、COUNT 仅覆盖加载范围,不会读取所有数据库记录。COUNT 统计数值;NULL、空值和非数值文本会被跳过。
批量公式只支持命名引用。QSUM、QAVG、QCOUNT 对固定的预览集合聚合,例如 =[price]/QSUM([price])。
Decimal 使用 28 位有效数字和 ROUND_HALF_EVEN;模型字段按 decimal_places 舍入。ROUND(8.5,0) 为 8,ROUND(9.5,0) 为 10。
| 错误 | 含义 |
|---|---|
#REF! |
引用不可用或超出快照 |
#CYCLE! |
循环依赖 |
#DIV/0! |
除以零 |
#VALUE! |
类型不兼容 |
#NAME? |
未知函数或名称 |
#N/A |
缺少计算输入 |
#NUM! |
无效数值结果 |
#LIMIT! |
超过计算预算 |
完整规则参见公式规范。