公式字段(Formula)
公式字段通过表达式自动计算并显示结果,支持引用当前记录的其他字段、使用内置函数和嵌套计算。适用于需要自动计算的场景,如总价、完成率、到期提醒等。
适用场景
- 计算订单总价:数量 × 单价
- 计算任务完成率:已完成数 ÷ 总数
- 拼接显示文本:姓氏 + 名字
- 判断日期状态:IF(截止日期 < 今天(), "已逾期", "未逾期")
创建公式字段
- 在数据表中点击「添加字段」。
- 选择字段类型为「公式」。
- 在公式编辑器中输入表达式。
- 配置结果格式(如数字精度、日期格式等)。
- 点击保存。
公式编辑器
SmartTable 提供公式助手组件,降低公式编写门槛:
- 字段选择:点击可插入当前记录的字段引用。
- 函数列表:按分类展示所有可用函数,点击即可插入。
- 语法提示:输入函数时显示参数说明。
- 实时预览:保存前可预览计算结果。
引用字段
在公式中引用字段时,使用字段名称或字段标识,例如:
{数量} * {单价}也可以直接输入字段名:
数量 * 单价系统会在保存时自动解析并关联对应字段。
内置函数
SmartTable 公式引擎提供 47 个内置函数,覆盖以下类别:
数学函数
| 函数 | 说明 | 示例 |
|---|---|---|
| SUM | 求和 | SUM(1, 2, 3) |
| AVERAGE | 平均值 | AVERAGE({语文}, {数学}) |
| MAX | 最大值 | MAX({数值1}, {数值2}) |
| MIN | 最小值 | MIN({数值1}, {数值2}) |
| ROUND | 四舍五入 | ROUND({数值}, 2) |
| ABS | 绝对值 | ABS({数值}) |
文本函数
| 函数 | 说明 | 示例 |
|---|---|---|
| CONCAT | 拼接文本 | CONCAT({姓}, {名}) |
| LEFT | 从左截取 | LEFT({文本}, 3) |
| RIGHT | 从右截取 | RIGHT({文本}, 3) |
| LEN | 文本长度 | LEN({文本}) |
| TRIM | 去除两端空格 | TRIM({文本}) |
日期函数
| 函数 | 说明 | 示例 |
|---|---|---|
| TODAY | 当前日期 | TODAY() |
| NOW | 当前日期时间 | NOW() |
| DATEADD | 日期加减 | DATEADD({日期}, 3, "days") |
| DATEDIFF | 日期差 | DATEDIFF({结束}, {开始}, "days") |
| YEAR / MONTH / DAY | 提取年月日 | YEAR({日期}) |
逻辑函数
| 函数 | 说明 | 示例 |
|---|---|---|
| IF | 条件判断 | IF({状态}="完成", 100, 0) |
| AND | 全部成立 | AND({条件1}, {条件2}) |
| OR | 任一成立 | OR({条件1}, {条件2}) |
| NOT | 取反 | NOT({条件}) |
| ISBLANK | 是否为空 | ISBLANK({字段}) |
结果格式化
公式字段支持多种结果格式:
- 数字:配置小数位数、千分位分隔符。
- 货币:选择货币符号(¥、$ 等)。
- 百分比:自动乘以 100 并显示 %。
- 日期/日期时间:选择日期显示格式。
格式选择
公式保存后仍可修改格式。如果公式返回的是日期时间戳,请选择日期格式,避免显示为长数字。
常见示例
计算总价
{数量} * {单价}计算完成率
IF({总数} > 0, {已完成} / {总数} * 100, 0)逾期判断
IF({截止日期} < TODAY(), "已逾期", "未逾期")状态标签
IF({进度} = 100, "已完成", IF({进度} > 0, "进行中", "未开始"))注意事项
- 公式字段为只读,不能手动编辑计算结果。
- 公式中引用的字段值变更后,公式结果会自动重算。
- 如果公式语法有误,字段会显示「计算错误」,请检查函数名和参数。
- 公式字段可以引用其他公式字段,但请避免循环引用。
