作者:管理员  历史版本:1  最后编辑:Eddy  更新时间:2024-10-24 16:08

适用版本:v3.3.5+;

简介

我们在设计表单时,很多表单字段都需要自动计算出来,不需要手动输入时,我们可以对字段进行公式设置。能够帮助我们减少人工计算结果手动输入的的一些误差,提高填写表单的效率,减少填写内容
表单公式计算

1.公式规则操作

公式面板左侧可以选择公式所要用到的属性。一定要从左侧选择属性(蓝底),手写或者复制无效。其他函数的字段都必须来自当前业务对象属性。

2.数据类型匹配

函数运用时要注意参数数据类型和返回值数据类型,一定要对应,不对应则无法获得正确的结果。例如公式的返回值是一个字符串,则不能把这个公式写在日期控件或者数字控件中。

控件 返回数据类型
单行文本框 字符串
多行文本 字符串
数字控件 数字(包含小数位数)
单项选择 字符串
多项选择 字符串(以逗号分隔)
下拉框 字符串
下拉复选框 字符串(以逗号分隔)
日期控件 字符串(按日期格式)
富文本框 字符串(带html标签)
自动编号 字符串
上传附件 Json的字符串[{id:'xxxx',filename:'文件名'}]
选择器控件 Json格式(如:[{id:"123",name:"张三"}])仅存id格式 (存储id)绑定id 绑定的字段存id,该控件存name
关联数据 关联数据主键 字符串多选存储字符串(以逗号分隔)
地址 JSON格式的字符串格式如下:{"country":"CN","province":14,"city":1402,"district":140202, "street":"街道"}
签名 Base64的图片字符串

3.公式介绍

3.1 函数方法名大写

运用函数的时候,请用纯大写字母。函数会自动联想,正确的函数会变为紫红色。如下图:

也可以直接在"函数"面板中,点击出现,如下图所示:

3.2 运算符号

3.3 数学函数

处理数字的一系列函数方法。

ABS

ABS函数可以获取一个数的绝对值
用法:ABS(数字)

公式范例:返回数字的绝对值;
ABS(-8)可以返回8,也就是-8的绝对值

AVERAGE

AVERAGE函数可以获取一组数值的算术平均值
用法:AVERAGE(数字1,数字2,…)

公式范例:算几个填写数字的平均值。
AVERAGE({语文成绩},{数学成绩}, {英语成绩})返回三门课程的平均分

CEILING

CEILING函数可以将数字增大到最接近原值的指定因数的倍数
用法:CEILING(数字,因数)

公式范例:CEILING(7,6)返回12,因为12比7大的同时,也是6的倍数中最接近7的数字

COUNT

COUNT函数可以获取参数的数量
用法:COUNT(值,值,…)

公式范例:统计勾选复选框的数量;
COUNT(小明,小王,小张,小李)返回4,也就是人员的数量

COUNTIF

COUNTIF函数可以获取数组中满足条件的参数个数
用法:COUNTIF(数组,’条件’)

公式范例1:COUNTIF(子表单.性别, ‘女’),可得到子表单中性别填的是’女’的数据条数;

公式范例2:COUNTIF([1,2,3,4],’>2’),可得到1,2,3,4中大于2的数字数量,结果为2。

FIXED

FIXED函数可将数字舍入到指定的小数位数并输出为文本
用法:FIXED(数字,小数位数)

公式范例:FIXED(3.1415,2)返回’3.14’

FLOOR

FLOOR函数可将数字减小到最接近原值的指定因数的倍数
用法:FLOOR(数字,因数)

公式范例:FLOOR(7,6)返回6,因为6比7小的同时,也是6的倍数中最接近7的数字

INT

INT函数可以获取一个数的整数部分
用法:INT(数字)

公式范例:将数字向下舍入到最接近的整数。
INT(3.1415)返回3,也就是3.1415的整数部分

LARGE

LARGE函数可以获取数据集中第k个最大值
用法:LARGE(数组,k)

公式范例:LARGE({学生成绩.数学成绩},1)返回子表单’学生成绩’中排名第1的’数学成绩’

LOG

LOG函数可以根据指定底数返回数字的对数
用法:LOG(数字,底数)

公式范例:LOG(100,10)返回2,也就是以10为底数100的对数

MAX

MAX函数可以获取一组数值的最大值
用法:MAX(数字1,数字2,…)

公式范例:取的填写最高一次数值的信息;
MAX({语文成绩},{数学成绩},{英语成绩})返回三门课程中的最高分

MIN

MIN函数可以获取一组数值的最小值
用法:MIN(数字1,数字2,…)

公式范例:返回一组值中的最小值。
MIN({语文成绩},{数学成绩},{英语成绩})返回三门课程中的最低分

MOD

MOD函数可以获取两数相除的余数
用法:MOD(被除数,除数)

公式范例:MOD(4,3)返回1,也就是4/3的余数

POWER

POWER函数可以获取数字乘幂的结果
用法:POWER(数字,指数)

公式范例:POWER(3,2)返回9,也就是3的2次方

PRODUCT

PRODUCT函数可以获取一组数值的乘积
用法:PRODUCT(数字1,数字2,…)

公式范例:数字相乘并返回乘积;
PRODUCT({单价}, {数量})获取总价,也就是单价和数量的乘积

RAND

RAND函数可返回大于等于0且小于1的均匀分布随机实数
用法:RAND()

公式范例:RAND()返回0.424656

ROUND

ROUND函数可以将数字四舍五入到指定的位数
用法:ROUND(数字,数字位数)

公式范例:ROUND(3.1485,2)返回3.15

SMALL

SMALL函数可以返回数据集中第k个最小值
用法:SMALL(数组,k)

公式范例:SMALL({学生成绩.数学成绩}, 1)返回子表单’学生成绩’中排名倒数第一的’数学成绩’

SQRT

SQRT函数可以获取一个数字的正平方根
用法:SQRT(数字)

公式范例:SQRT(9)返回3,也就是9的正平方根

SUM

SUM函数可以获取一组数值的总和
用法:SUM(数字1,数字2,…)

公式范例:数字相加并返回和。
SUM({语文成绩},{数学成绩}, {英语成绩})返回三门课程的总分

SUMPRODUCT

SUMPRODUCT函数可以将数组间对应的元素相乘,并返回乘积之和,适用于加权求和
用法:SUMPRODUCT(数组,数组…)

公式范例:主要可用于计算加权和。例如:SUMPRODUCT([1,2,3],[0.1,0.2,0.3]),相当于1×0.1 + 2×0.2 + 3×0.3=1.4;

3.4 文本函数

处理字符串文本的一系列函数方法

CONCATENATE

CONCATENATE函数可以将多个文本合并成一个文本
公式范例:

CONCATENATE(A,B,C),即返回值为ABC

字段或者函数之间,用逗号隔开。如果是字符串,需要用引号包裹起来。

CHAR

CHAR函数可以将计算机字符集的数字代码转换为对应字符。

公式范例:

CHAR(数字),CHAR(10)会返回换行字符

EXACT

EXACT函数可以比较两个文本是否完全相同,完全相同则返回true,否则返回false
用法:EXACT(文本1, 文本2)

公式范例:判断比较手机号和中奖手机号是否一致,EXACT({手机号},{中奖手机号}),如果两者相同,返回true,如果不相同,返回false

ISEMPTY

ISEMPTY函数可以用来判断值是否为空文本、空对象或者空数组
用法:ISEMPTY(文本)

公式范例:ISEMPTY(文本)判断数列A是否为空,B=ISEMPTY(文本),A为空时返回true,A非空时返回false。

LEFT

LEFT函数可以从一个文本的第一个字符开始返回指定个数的字符
用法:LEFT(文本,文本长度)

公式范例:LEFT(‘三年二班周杰伦’,2)返回’三年’,也就是’三年二班周杰伦’的从左往右的前2个字符

LEN

LEN函数可以获取文本中的字符个数
用法:LEN(文本)

公式范例:计算文本框输入值的字符总数信息
LEN(‘朝辞白帝彩云间’)返回7,因为这句诗中有7个字符

LOWER

LOWER函数可以将一个文本中的所有大写字母转换为小写字母
用法:LOWER(文本)

公式范例:将单行文本填写的大写字母都转换为小写
LOWER(‘JAYZ’)返回’jayz’

MID

MID返回文本中从指定位置开始的指定数目的字符
用法:MID(文本,开始位置_数字,指定数目)

公式范例:MID(‘流辰快速开发平台’,3,6)返回’快速开发平台’

REPLACE

REPLACE函数可以根据指定的字符数,将部分文本替换为不同的文本
用法:REPLACE(文本,开始位置,替换长度,新文本)

公式范例:将原文本填写的从第3位开始,替换6个位置的内容,替换为替代内容的信息;
REPLACE(‘流辰快速开发平台’,3,6,’企业数据管理平台’)返回’流辰企业数据管理平台’

REPT

REPT函数可以将文本重复一定次数
用法:REPT(文本,重复次数)

公式范例:重复文本框中的信息,重复3次;
REPT(‘流辰’,3)返回’流辰流辰流辰’

RIGHT

RIGHT函数可以获取由给定文本右端指定数量的字符构成的文本值
用法:RIGHT(文本,文本长度)

公式范例:将编号填写的信息,取右边后3位的值;
RIGHT(‘三年二班周杰伦’,3)返回’周杰伦’,也就是’三年二班周杰伦’从右往左的前3个字符

SEARCH

SEARCH函数可以获取文本1在文本2中的开始位置
用法:SEARCH(文本1,文本2)

公式范例:获取搜索内容在原文本的开始位置;
SEARCH(‘2023’,’流辰2023’)返回3

SPLIT

SPLIT函数可以将文本按指定分割符分割成数组
用法:SPLIT(文本,分隔符_文本)

公式范例:SPLIT(‘流辰-快速开发平台’,’-‘)返回’流辰,快速开发平台’

TEXT

TEXT函数可以将数字转化成文本
用法:TEXT(数字)

公式范例:将数字转换成特定格式的文本;
TEXT(3.1415)返回’3.1415’

TRIM

TRIM函数可以删除文本首尾的空格
用法:TRIM(文本)

公式范例:TRIM(‘ 流辰 ‘)返回’流辰’

UPPER

UPPER函数可以将一个文本中的所有小写字母转换为大写字母
用法:UPPER(文本)

公式范例:将单行文本内编写的小写字母转换大写;
UPPER(‘jayz’)返回’JAYZ’

VALUE

VALUE函数可以将文本转化为数字
用法:VALUE(文本)

公式范例:将文本转化为数字;
VALUE(‘3.1415’)返回3.1415

3.5 日期函数

处理日期的一系列函数方法。

DATE

DATE函数可以将时间戳转换为日期对象
用法:DATE(时间戳)

DATEDIF

DATEDIF函数可以计算两个日期时间相差的年数、月数、天数、小时数、分钟数、秒数。
用法:DATEDIF(开始时间,结束时间,[单位]),单位可以是 “y” 、”M”、”d”、”h”、”m”、”s”

公式范例:DATEDIF(下单时间,付款时间,”h”),如果下单时间是9:00,付款时间为当天10:30,计算得到的小时差为1.5。

DATEDELTA

DATEDELTA函数可以将指定日期加/减指定天数
用法:DATEDELTA(指定日期,需要加减的天数)

公式范例:将指定日期加/减指定天数;

DAY

DAY函数可以获取某日期是当月的第几日
用法:DAY(时间戳)

公式范例:获取某日期是当月的第几日

DAYS

DAYS函数可以返回两个日期之间相差的天数。
用法:DAYS(结束日期,开始日期)

公式范例:返回两个日期之间的天数。

DAYS360

DAYS360按照一年 360 天的算法,返回两个日期间相差的天数
用法:DAYS360(结束日期,开始日期)

公式范例:返回两个日期间相差的天数

HOUR

HOUR函数可以返回某日期的小时数
用法:HOUR(时间戳)

公式范例:返回某日期的小时数。

ISOWEEKNUM

ISOWEEKNUM函数可以返回指定日期在全年中的ISO周数
用法:ISOWEEKNUM(指定日期)

公式范例:返回指定日期在全年中的ISO周数。

MINUTE

MINUTE函数可以返回某日期的分钟数
用法:MINUTE(时间戳)

公式范例:返回某日期的分钟数。

MONTH

MONTH返回某日期的月份
用法:MONTH(时间戳)

公式范例:返回某日期的月份。

NOW

NOW函数可以获取当前时间
用法:NOW()

公式范例:获取当前时间。

SECOND

SECOND函数可以返回某日期的秒数
用法:SECOND(时间戳)

公式范例:返回某日期的秒数。

TIME

TIME函数可以返回特定时间的十进制数字
用法:TIME(时数字,分数字,秒_数字)

公式范例:返回特定时间的十进制数字。

TIMESTAMP

TIMESTAMP函数可以将日期对象转换成时间戳。
用法:TIMESTAMP(日期)

公式范例:将日期对象转换成时间戳。

TODAY

TODAY函数可以返回今天
用法:TODAY()

公式范例:返回今天。

WEEKNUM

WEEKNUM函数可以返回指定日期在当年是第几周
用法:WEEKNUM(指定日期)

公式范例:返回指定日期在当年是第几周:

YEAR

YEAR函数可以返回某日期的年份
用法:YEAR(时间戳)

公式范例:返回某日期的年份:

FORMAT

FORMAT 将日期对象转换为指定格式日期字符串

PARSE

PARSE 将按指定格式日期字符串转换为日期对象

3.6 逻辑函数

AND

如果所有参数都为真,AND函数返回布尔值true,否则返回布尔值 false
用法:AND(逻辑表达式1,逻辑表达式2,…)

公式范例:

FALSE

FALSE函数返回布尔值false
用法:FALSE()

IF

公式范例:

(1)IF函数支持多层嵌套,如下图:

60以下,为不及格;60-79,为中;80-89,为良;90以上,为优。

(2)IF应用于下拉框/单选按钮组,如下图:

(3)IF用于下拉复选框/复选框组,如下图:

IFS

IFS 函数检查是否满足一个或多个条件,且返回符合第一个TRUE条件的值,IFS可以取代多个嵌套IF语句。
用法:IFS(逻辑表达式1,逻辑表达式1为true返回该值,逻辑表达式2,逻辑表达式2为true返回该值,…)

公式范例:IFS(语文成绩 > 90,”优秀”,语文成绩 > 80,”良好”,语文成绩 >= 60,”及格”,语文成绩 < 60,”不及格”),根据成绩返回对应的评价。

INCLUDES

INCLUDES 函数判断数据是否包含值,如果满足返回true,如果不满足则返回false。
用法:INCLUDES(数据,数据判断包含的值)

公式范例:INCLUDES({文本},’测试’),当文本中包含’测试’,返回true,否则返回false。

NOT

NOT函数返回与指定表达式相反的布尔值。
用法:NOT(逻辑表达式)

公式范例:NOT({语文成绩}>60),如果语文成绩大于60返回false,否则返回true

OR

如果任意参数为真,OR 函数返回布尔值true;如果所有参数为假,返回布尔值false。
用法:OR(逻辑表达式1,逻辑表达式2,…)

公式范例:

TRUE

TRUE函数返回布尔值true
用法:TRUE()

XOR

XOR函数可以返回所有参数的异或值
用法:XOR(逻辑表达式1, 逻辑表达式2,…)

公式范例:XOR({语文成绩}> 90,{数学成绩}> 90),如果两门成绩都> 90,返回false;如果两门成绩都< 90,返回false;如果其中一门> 90,另外一门< 90,返回true

ISEMPTY

ISEMPTY函数可以用来判断值是否为空文本、空对象或者空数组
用法:ISEMPTY(文本)

公式范例:ISEMPTY(文本)判断数列A是否为空,B=ISEMPTY(文本),A为空时返回true,A非空时返回false。

3.7 高级函数

UUID

UUID()

随机码生成器。可适用于随机流水号的使用场景等。

但要注意UUID()保证输出的32位字符串不会重复,不能保证从这32位字符串中截取的一部分也不重复,

CURRENCY

CURRENCY 中文货币大写

THOUSANDS

THOUSANDS 数字千分位

PINYIN

PINYIN 函数可以把中文转拼音

4. 具体操作案例

4.1 字符串综合运用举例

说明:在这个表单里要输入身份证号码,自动生成性别。单行文本"性别"字段的函数为:

  1. 身份证的第17位数为奇数的时候,返回"男",否则返回"女"

4.2 高级函数运用举例

  1. 统计选择相同课程的人数

4.3 计算时间差运用举例

说明:此用例可以用于计算两个日期之间的(年,月,日,时,分,秒)

1、时间差(年)配置
DATEDIF(DATE(变量:开始时间),DATE(变量:结束时间),"y")

2、时间差(月)配置
DATEDIF(DATE(变量:开始时间),DATE(变量:结束时间),"M")

3、时间差(日)配置
DATEDIF(DATE(变量:开始时间),DATE(变量:结束时间),"d")

4、时间差(时)配置
DATEDIF(DATE(变量:开始时间),DATE(变量:结束时间),"h")

5、时间差(分)配置
DATEDIF(DATE(变量:开始时间),DATE(变量:结束时间),"m")

6、时间差(秒)配置
DATEDIF(DATE(变量:开始时间),DATE(变量:结束时间),"s")

7、上方时间差配置后,预览效果

8、时间差(时)计算:当天打卡时长
DATEDIF(DATE(PARSE(变量:开始时间,"HH:mm:ss")),DATE(PARSE(变量:结束时间,"HH:mm:ss")),'h')

9、时间差(年)计算年龄
INT(DATEDIF(DATE(变量:开始时间),DATE(变量:结束时间),"y"))