下拉复选框 目前的逻辑为:勾选多个选项之后,选项的存储排序是按照勾选顺序来排列的,而不是按照选项本身的顺序来排列的。即:下拉复选框依次勾选了「B、C、A」之后,存储起来的排序就是「B、C、A」,而不是「A、B、C」。
需要使用下拉复选框字段制作题目并计算得分的场景。
表单内添加一个下拉复选框用来选择答案,一个单行文本记录该多选题的正确答案,一个数字字段计算得分(这里用正确得 10 分,否则得 0 分举例)。
设置正确答案为辅助字段用于在得分公式中与选择的答案进行对比,在表单设计 >> 正确答案字段 >> 字段属性>> 默认值处填写问题的正确答案。
注:正确答案间需要有英文逗号间隔,不要求答案顺序。
如字段设置为不可见,则一定要在表单属性中修改「不可见字段赋值」属性为「始终重新计算」。
已知答案正确有 2 个条件:
答案正确首先应该满足「条件 1:选择的答案个数和正确答案的个数相同」,因此可以通过 COUNT函数 来计算出 2 个答案的个数,即满足公式:
COUNT(请选择答案)==COUNT(SPLIT(正确答案,',')
表示选择的答案个数和正确答案的个数相同;
其中 SPLIT函数 用于将正确答案的文本字段用英文逗号分割成数组。
在满足 2 个答案个数相同的情况下,我们还需要判断答案的选项是否一致。
假设正确答案是「A、B、C」,选择的答案是「A、B、E」,则答案的选项是不一致的,因此我们考虑将正确答案和选择答案组合在一起去重,去重之后组合为「A、B、C、E」,选项个数为 4 个,和正确答案个数不符,则判断为错误;
如选择的答案是「A、B、C」,此时将正确答案和选择答案组合在一起去重之后,组合为「A、B、C」,选项个数是 3 个,等于正确答案个数,则判断为正确。
因此想要答案正确还应该满足「条件 2:选择的答案和正确答案组合去重之后,答案个数应该等于正确答案个数」,即需要满足公式:
COUNT(UNION(SPLIT(正确答案+','+请选择答案,',')))==COUNT(SPLIT(正确答案,','))
表示选择的答案和正确答案组合去重之后,答案个数等于正确答案个数;
其中 UNION函数 可以将文本内的重复数据自动剔除。
综上,在设置得分字段的公式时,用 IF函数 将两个条件添加进去即可,得分字段设置公式为:
IF(AND(COUNT(请选择答案)==COUNT(SPLIT(正确答案,',')),COUNT(UNION(SPLIT(请选择答案+','+正确答案,',')))==COUNT(SPLIT(正确答案,','))),10,0)
表示当同时满足条件 1 和条件 2 时,得分为 10,否则不得分。
注:操作步骤中的公式复制后不可直接使用,字段调用处需进行手动替换。