公式规则
写公式前先确定使用入口。单题公式编辑器使用字段 ID 变量;高级逻辑支持 Q1 等题号变量。 函数名相同,不代表题目引用可以原样复制。
单题计算公式:从字段树插入
在题目的 计算公式 → 点击设置 中,先从字段树选择答案,再组合运算符和函数。字段会显示为可读的名称标签,底层保存稳定的 ID。
| 表达式 | 含义 |
|---|---|
#{question_id.answer_id} | 读取一个填空项的答案 |
#{question_id.answer_id|0} | 为空时使用默认值 0 |
#{_question_id.answer_id} | 读取答案的文本形式 |
#{$question_id} | 读取题目分值 |
#{question_id.$row_id.option_id} | 引用矩阵中的行、列单元 |
表中的 ID 为占位名称。字段树插入的变量与当前问卷对应,不能把另一份问卷的 ID 原样复制过来。点击变量标签可配置默认值、文本或分值模式。
例如 采购金额演示 使用:
ROUND(#{quantity.quantity_value|0}*#{price.price_value|0},2)
数量 10、单价 28 时返回 280;任一来源为空时按 0 参与计算。
高级逻辑:使用题号
在 逻辑 → 高级逻辑 中,可以使用以下题号引用。函数分类页中的 Q1 示例采用这一套写法。
| 写法 | 含义 |
|---|---|
Q1 | 第 1 题答案 |
Q1A1 | 第 1 题第 1 个选项 |
Q1~4 | 连续第 1 至第 4 题 |
QS1 | 第 1 个题组 |
QS1Q1 | 第 1 个题组内第 1 题 |
QS1Q1A1 | 该题组题目的第 1 个选项 |
Q1S1 | 第 1 题矩阵的第 1 行 |
Q1S1A1 | 第 1 题矩阵第 1 行、第 1 列 |
TEXT(Q1) | 答案或选项的显示文本 |
SCORE(Q1) | 题目分值 |
COUNT(Q1) | 多选题选中数量等计数值 |
高级逻辑需要完整的规则,不是只放一个函数。例如前三题依次为数量、单价、金额时:
assignment Q3 with ROUND(DEFAULT(Q1,0)*DEFAULT(Q2,0),2)
题号按高级逻辑编辑器显示的映射确定。调整题目顺序或结构后,应重新检查映射与规则。更多写法见 变量规则。
运算符与常量
| 运算 | 写法 | 固定值示例 |
|---|---|---|
| 加、减、乘、除 | +、-、*、/ | 10*28 |
| 大于、小于 | >、< | 80>60 |
| 等于、不等于 | ==、!= | "A"=="A" |
| 大于等于、小于等于 | >=、<= | 60>=60 |
判断相等使用 ==,不能写 =。公式输入框不需要在开头加等号。逗号、括号和引号使用英文半角字符;固定文本放在引号中,变量不加引号。
SUM(10,20)
IF(80>=60,"合格","不合格")
ROUND(3*19.99,2)
返回值与空值
| 写入位置 | 应返回的类型 |
|---|---|
| 数字填空 | 数字 |
| 普通文本填空 | 文本或数字 |
| 显示条件 | TRUE 或 FALSE |
| 自定义校验 | 按该入口要求返回条件或错误提示,参照校验文档 |
未填写、数字 0 和空字符串不是同一种情况。来源为空时,公式可能不计算;只有业务允许把空值视为 0 时才配置默认值。除法还需要单独处理分母为 0,不能仅靠默认值解决。
当前时间函数在页面计算时执行,不等于后端保存的提交时间。需要审计或统计正式提交时间时,使用数据详情中的系统提交时间字段。
常见错误
- 照抄 Q1 后无结果:确认是否误把高级逻辑题号写进单题公式;改为从字段树插入变量。
- 变量不再存在:检查来源题目或填空项是否被删除、替换。
- 结果为空或异常:检查来源空值、分母为 0、返回类型和循环引用。
- 从 Excel 复制后失败:不要假定所有 Excel 语法和函数都兼容,按分类文档说明和当前编辑器支持情况验证。
正式使用前,用正常值、空值、边界值和修改后重新计算各测试一次。函数参考提供写法说明,不能替代具体业务的试算。