什么是公式?

公式是一种数学表达式,用于描述数学关系、规律或运算。他能通过基本的算术运算实现单元格之间的数学关系,帮助客户解决单位换算,绩效计算,工资计算等复杂功能。

如何使用公式?

1、实现计算工资

工资=良品数*工资单价

使用下面的公式实现该功能:${报工.良品数} *${报工.工序.工资单价}

2、实现单位换算功能

例如把KG换算成G,使用下面的方式来实现:

首先,我们先在加工单列表创建一个扩展字段名字叫做千克,然后创建一个公式类型的扩展字段,在其中输入下面的公式:

${加工单.克}*1000

3、使用函数

1、case函数

介绍:
返回匹配条件的执行公式结果。

表达式:
CASE( 条件1, 执行公式1;条件2,执行公式2;…)

示例:
CASE( 1 == 1, 2+2; 1 > 2, 3+3;)返回4,因为匹配到条件“1等于1”,返回对应公式“2+2”的计算结果4。

2、ROUND函数

介绍:
将数字四舍五入到指定的位数,其中number是要舍入的数字,num_digits表示保留的小数位数(正数)或舍入到整数位的位数(负数)。

num_digits = 3 表示保留 3 位小数。
num_digits = -1 表示舍入到十位(整数部分的十位)。

表达式:
ROUND(number,num_digits)

示例:
ROUND(3.1415926, 3)返回3.142,因为3.1415926四舍五入保留3位小数是3.142。

3‌、ROUNDUP函数

介绍:
用于向上舍入取整,其中number是要舍入的数字,num_digits表示保留的小数位数(正数)或舍入到整数位的位数(负数)。

num_digits = 3 表示保留 3 位小数。
num_digits = -1 表示舍入到十位(整数部分的十位)。

表达式:
ROUNDUP(number,num_digits)

示例:
ROUNDUP(3.1415926, 3)返回3.142,因为3.1415926向上舍入保留3位小数是3.142。

4、ROUNDDOWN函数

介绍:
用于向下舍入取整,其中number是要舍入的数字,num_digits表示保留的小数位数(正数)或舍入到整数位的位数(负数)。

num_digits = 3 表示保留 3 位小数。
num_digits = -1 表示舍入到十位(整数部分的十位)。

表达式:
ROUNDDOWN(number,num_digits)

示例:
ROUNDDOWN(3.1415926, 3)返回3.141,因为3.1415926向下舍入保留3位小数是3.141。

5、TRUNC函数

介绍:
用于截断小数部分,直接取整。

表达式:
TRUNC(number)

示例:
TRUNC(3.1415926)返回3,因为3.1415926截断小数部分是3。

支持符号(英文模式下)

  • 校验字符白名单(英文模式)
    • 运算符号:加 (+)、减 (-)、乘 (*)、除 (/)
    • 判断符号:等于 (==)、不等于 (!=)、大于 (>)、小于 (<)、大于等于 (>=)、小于等于 (<=)
    • 条件符号:且 (&&)、或(||)
    • 语法符号:小括号 (())、dollar符 ($)、逗号 (,)、分号 (;)、双引号 (“)、单引号 (‘)
+解释说明+是算术运算符,表示加法
使用方式number1+number2
  • 返回值为实数

  • number必需,目前支持字段类型为数字型的相加或者数字型字段和实数之间的相加
示例${报工.良品数}+${报工.不良品数}
解释说明-是算术运算符,表示减法
使用方式number1-number2
  • 返回值为实数

  • number必需,目前支持字段类型为数字型的相减或者数字型字段和实数之间的减法
示例${报工.良品数}-${报工.不良品数}
*解释说明*是算术运算符,表示乘法
使用方式number1*number2
  • 返回值为实数

  • number必需,目前支持字段类型为数字型的相乘或数字型字段和实数相乘
示例${报工.良品数}*2
/解释说明/是算术运算符,表示除法
使用方式number1/number2
  • 返回值为实数

  • number必需,目前支持字段类型为数字型的相除或数字型字段和实数之间的除法
示例${报工.良品数}/${报工.报工数}
==解释说明==是关系判断符,表示是否相等,返回结果是布尔类型,若相等返回true,若不相等返回结果false
使用方式logical1==logical2
  • 返回结果为布尔型,返回true或者false

  • logical:必需。表示逻辑表达式

  • 支持数字、文本、单选类型字段的判断

  • 若参与计算的逻辑表达式有其他型,返回false
示例1==2返回结果为false
!=解释说明!=是关系判断符,表示是否相等,返回结果是布尔类型,若相等返回false,若不相等返回结果true
使用方式logical1!=logical2
  • 返回结果为布尔型,返回true或者false

  • logical:必需。表示逻辑表达式

  • 支持数字、文本、单选类型字段的判断

  • 若参与计算的逻辑表达式有其他型,返回false
示例1!=2返回结果为true
>解释说明>是关系判断符,表示是否大于,返回结果是布尔类型,若大于返回true,若小于返回结果false
使用方式logical1>logical2
  • 返回结果为布尔型,返回true或者false

  • logical:必需。表示逻辑表达式

  • 支持数字类型字段的判断

  • 若参与计算的逻辑表达式有其他型,返回false
示例1>2结果为false
<解释说明<是关系判断符,表示是否小于,返回结果是布尔类型,若小于返回true,若大于返回结果false
使用方式logical1<logical2
  • 返回结果为布尔型,返回true或者false

  • logical:必需。表示逻辑表达式

  • 支持数字类型字段的判断

  • 若参与计算的逻辑表达式有其他型,返回false
示例1<2结果为true
>=解释说明>=是关系判断符,表示是否大于等于,返回结果是布尔类型,若大于等于返回true,若小于等于返回结果false
使用方式logical1>=logical2
  • 返回结果为布尔型,返回true或者false

  • logical:必需。表示逻辑表达式

  • 支持数字类型字段的判断

  • 若参与计算的逻辑表达式有其他型,返回false
示例1>=2结果为false
<=解释说明<=是关系判断符,表示是否小于等于,返回结果是布尔类型,若小于等于返回true,若大于等于返回结果false
使用方式logical1<=logical2
  • 返回结果为布尔型,返回true或者false

  • logical:必需。表示逻辑表达式

  • 支持数字类型字段的判断

  • 若参与计算的逻辑表达式有其他型,返回false
示例1<=2结果为true
&&解释说明&&是条件符号,表示用户设置多个逻辑表达式是否同时满足,若同时满足返回true,若不是同时满足。返回false
使用方式logical1<=logical2&& logical1>logical3
  • 返回结果为布尔型,返回true或者false

  • logical:必需。表示逻辑表达式

  • 支持数字类型字段的判断

  • 若参与计算的逻辑表达式有其他型,返回false
示例1<=2&&1>0结果为true
||解释说明||是条件符号,表示用户设置多个逻辑表达式是否满足任意一个,若满足任意一个返回true,若不是满足任意一个。返回false
使用方式logical1<=logical2 || logical1>logical3
  • 返回结果为布尔型,返回true或者false

  • logical:必需。表示逻辑表达式

  • 支持数字类型字段的判断

  • 若参与计算的逻辑表达式有其他型,返回false
示例1<=2 || 1>3结果为true
()解释说明小括号,使用时必须成对出现
使用方式配合其他运算符使用,代表计算优先级
,解释说明逗号,当一个case语句由多个公式组成,中间用逗号分隔
;解释说明分号,当公式编辑器有多个函数,函数之间用分号隔开
“”、”解释说明双引号和单引号,当一个表达式有常量时,需将常量置于双引号内

绩效工资公式案例

案例1:阶梯工资

case(
${报工.良品数}>0 && ${报工.良品数}<=100,
${报工.良品数} * ${报工.工资单价};
${报工.良品数}>100 && ${报工.良品数}<=200,
100*${报工.工资单价} + (${报工.良品数}-100) * (${报工.工资单价} + ${报工.参数1});
${报工.良品数} > 200,
100${报工.工资单价}+100(${报工.工资单价}+${报工.参数1})+(${报工.良品数}-200)(${报工.工资单价}+${报工.参数1}2)
)

案例2:计时工资

${报工.报工时长}/${报工.标准工时}*${报工.工资单价}