计算公式
1.概述
1.1应用场景
在工业生产和制造过程中,可以采集到大量的原始数据,但原始数据能够反馈的情况比较单一,通过计算公式的方式,进行原始数据采集后的处理,可用于计算产品的质量、效率和成本,如良品率、设备综合效率指标OEE、单位产品生产能耗、单位成品生产物耗等,通过自动化的数据处理,将数据变成直观可衡量的指标,帮助现场人员进行复杂计算、分析和决策。
1.2通用说明
名词 | 说明 | 示例 |
---|---|---|
字段 | 当前数据表中,目标列所对应的当前行的值,用于参与公式运算 | [目标字段] |
运算符 | 使公式能够成立的逻辑或运算符号 | +、-、&、<、>、=、!= 等 |
函数 | 通过特定的运算规则得到期望的输出值 | SUM(2, 101) = 103 |
参数 | 在公式中参与计算的数字或文本 | TEXT(值, 格式) 中,“值”和“格式”是该公式的两个参数 |
1.3运算符说明
1.4函数说明
日期函数
函数 | 用法 | 说明 | 参数 | 示例 |
---|---|---|---|---|
DATE | DATE(年,月,日) | 将输入的年月日转换为日期格式 | 年:日期的年份部分。 月:日期的月份部分。 日:日期的日部分。 | DATE(2021,7,20)=2021/07/20 |
DATEDIF | DATEDIF(起始日期, 结束日期, 单位) | 计算两个日期之间的天数、月数或年数。 | 起始日期:计算中要使用的开始日期。必须是以下一种:对包含日期的单元格的引用、返回日期类型的函数、或数字。 结束日期:计算中要使用的结束日期。必须是以下一种:对包含日期的单元格的引用、返回日期类型的函数、或数字。 单位:某种时间单位的缩写字符串。例如,Y 代表年、M 代表月、D 代表天等。 | DATEDIF("1969-7-16", "1969-7-24", "Y")=0 |
DAY | DAY(日期值) | 获取特定日期的日部分 | 日期值:要从中提取具体几号的日期。 | DAY("1969-7-20")=20 |
DAYS | DAYS(结束日期,起始日期) | 计算两个日期之间的天数 | 结束日期:日期范围的结束日期。 起始日期:日期范围的起始日期。 | DAYS("1969-7-24", "1969-7-16")=8 |
HOUR | HOUR(时间) | 获取特定时间的小时部分 | 时间:用于计算小时部分的时间。 | HOUR("11:40:59")=11 |
MINUTE | MINUTE(时间) | 获取特定时间的分钟部分 | 时间:用于计算分钟部分的时间。 | MINUTE("11:40:59")=40 |
MONTH | MONTH(日期值) | 获取特定日期的月部分 | 日期值:要从中提取月份的日期。 | MONTH("1969-7-20")=7 |
NOW | NOW() | 获取当期日期和时间 | 无 | NOW() |
SECOND | SECOND(时间) | 获取特定时间的秒部分 | 时间:用于计算秒钟部分的时间。 | SECOND("11:40:59")=59 |
TODAY | TODAY() | 获取当前日期 | 无 | TODAY() |
WEEKDAY | WEEKDAY(日期值,[类型]) | 将输入的日期转换为星期日期 | 日期值:要为其确定星期几的日期。必须是以下一种:对包含日期的单元格的引用、返回日期类型的函数或者数字。 类型:表示一周开始之日的数字。若始于星期日则为 1,若始于星期一则为 2,依此类推。 | WEEKDAY("1969-7-20", 1)=1 |
WEEKNUM | WEEKNUM(日期, [类型]) | 将输入的日期转换为代表该星期为一年中第几周的数字 | 日期:要确定其所在周序号的日期。必须是以下一种:对包含日期的单元格的引用、返回日期类型的函数或者数字。 类型:表示一周开始之日的数字。若始于星期日则为 1,若始于星期一则为 2,依此类推。 | WEEKNUM("1969-7-20", 1)=30 |
YEAR | YEAR(日期值) | 获取特定日期的年部分 | 日期值:要从中提取年份的日期。 | YEAR("1969-7-20")=1969 |
逻辑函数
函数 | 用法 | 说明 | 参数 | 示例 |
---|---|---|---|---|
AND | AND(逻辑表达式1, [逻辑表达式2, ...]) | 当提供的所有参数均是逻辑为真时返回 TRUE;如果提供的参数中任何一个的逻辑为假则返回 FALSE。 | 逻辑表达式 1:一个表达式或对包含表达式的单元格的引用,该表达式代表某种逻辑值(即 TRUE 或 FALSE)或者可以强制转换为逻辑值。 逻辑表达式 2:更多表示逻辑值的表达式。 | AND(1=1, 1=2)=false |
FALSE | FALSE() | 返回逻辑值 FALSE | 无 | FALSE() |
IF | IF(逻辑表达式, 为 TRUE 时的返回值, [为 FALSE 时的返回值]) | 当逻辑表达式的值为 TRUE 时返回一个值,当其为 FALSE 时返回另一个值。 | 逻辑表达式:一个表达式或对包含表达式的单元格的引用,该表达式代表某种逻辑值,即 TRUE 或 FALSE。 为 TRUE 时的返回值:当“逻辑表达式”为 TRUE 时的返回值。 为 FALSE 时的返回值:当“逻辑表达式”为 FALSE 时的返回值。 | 【场景】小明的成绩为 80 【公式】IF([成绩]>60,"及格","不及格") 【示例】及格 |
NOT | NOT(逻辑函数) | 对其参数的逻辑求反。 | 逻辑函数:计算结果为 TRUE 或 FALSE 的任何值或表达式。 | NOT(TRUE)=false |
OR | OR(逻辑表达式1, [逻辑表达式2, ...]) | 只要提供的参数中任何一个的逻辑为真就返回 TRUE,如果提供的所有参数均是逻辑为假则返回 FALSE。 | 逻辑表达式1:一个表达式或对包含表达式的单元格的引用,该表达式代表某种逻辑值(即 TRUE 或 FALSE)或者可以强制转换为逻辑值。 逻辑表达式2:更多计算结果为逻辑值的表达式。 | OR(1=2, 1=1)=true OR(1=2, 1=3)=false |
TRUE | TRUE() | 返回逻辑值 TRUE。 | 无 | TRUE() |
文本函数
函数 | 用法 | 说明 | 参数 | 示例 |
---|---|---|---|---|
CHAR | CHAR(数字) | 将数字代码转换为对应的 Unicode 字符。 | 数字:需要转换为 Unicode 字符的数字。 | CHAR(10) = \n CHAR(92) = \ |
CONCATENATE | CONCATENATE(字符串1, [字符串2, ...]) | 将一个字符串追加至另一字符串之后。 | 字符串 1:初始字符串。 字符串 2:要在后面追加的字符串。 | CONCATENATE("abc", "123") = abc123 |
LEFT | LEFT(字符串, [字符数]) | 返回从指定字符串开头提取的子串。 | 字符串:要返回其左侧部分的字符串。 字符数:要从“字符串”左侧返回的字符数。 | LEFT("abcd", 2) = ab |
LEN | LEN(文本) | 返回指定的字符串的长度。 | 文本:要返回其长度的字符串。 | LEN("abcd") = 4 |
LOWER | LOWER(文本) | 将指定字符串中的字母转换为小写。 | 文本:要转换为小写的字符串。 | LOWER("LOREM IPSUM") = lorem ipsum |
MID | MID(字符串, 开始位置, 提取长度) | 返回指定字符串中的子串。 | 字符串:要从中选取子串的字符串。 开始位置:要从“字符串”中开始提取的位置。“字符串”中第一个字符的索引为 1。 提取长度:需要提取的长度。 | MID("abcd", 1, 2) = ab |
REPLACE | REPLACE(文本, 位置, 长度, 新文本) | 将文本字符串的一部分替换为其他文本字符串。 | 文本:其中一部分将被替换的文本。 位置:替换的开始位置(起始索引编号为 1)。 长度:文本中要替换的字符数。 新文本:要插入到原有文本中的文本。 | REPLACE("abcdefg", 1, 6, "xyz") = xyzg |
RIGHT | RIGHT(字符串, [字符数]) | 返回从指定字符串尾部提取的子串。 | 字符串:要返回其右侧部分的字符串。 字符数:要从“字符串”右侧返回的字符数。 | RIGHT("abcd", 2) = cd |
TEXT | TEXT(值, 格式) | 按照指定格式将值转换为文本。 | 值:要转换为文本的值。 格式:自定义的文本格式,常见如:"yyyy-MM-dd HH:mm:ss"代表将日期字段转为"2021-06-30 00:00:00"的格式。 | TEXT( "2021-01-01" , "M月d日") = 1月1日 |
TODATE | TODATE(文本) | 将文本转成日期格式。 | 文本:要转的文本值,例如: 2021/06/30 | TODATE("2021-06-30") = 2021-06-30 |
TRIM | TRIM(文本) | 移除文本中的前导、结尾和重复空格。 | 文本:要移除空格的文本或对包含要移除空格的文本的单元格引用 | TRIM(" lorem ipsum") = lorem ipsum |
UPPER | UPPER(文本) | 将指定字符串中的字母转换为大写。 | 文本:要转换为大写的字符串。 | UPPER("lorem ipsum") = LOREM IPSUM |
数据函数
函数 | 用法 | 说明 | 参数 | 示例 |
---|---|---|---|---|
ABS | ABS(数值) | 展示数值的绝对值。 | 数值:要返回其绝对值的数值。 | ABS(-2) = 2 |
RAND | RAND() | 返回 0 和 1 之间的一个随机实数。 若要生成 a 与 b 之间的随机实数,使用RAND()*(b-a)+a | 无 | RAND()=0.18834828 |
RANDBETWEEN | RANDBETWEEN(最小值, 最大值) | 返回位于两个指定数之间的一个随机整数 | 最小值:将返回的最小整数。 最大值:将返回的最大整数。 | RANDBETWEEN(1,100)=58 |
ROUND | ROUND(数值, 位数) | 将数值的指定位数以下进行四舍五入。 | 数值:要四舍五入的数值 。 位数:代表舍入的位数,1 代表小数点后一位,2 代表小数点后二位,-1 代表个位数。 | ROUND(99.44, 1)=99.4 ROUND(99.44, -1)=100 |
ROUNDDOWN | ROUNDDOWN(数值, 位数) | 向绝对值减小的方向舍入数字 | 数值:要舍入的数值。 位数:代表舍入的位数,1 代表小数点后一位,2 代表小数点后二位,-1 代表个位数。 | ROUNDDOWN(99.44, 1)=99.4 ROUNDDOWN(99.44, -1)=90 |
ROUNDUP | ROUNDUP(数值, 位数) | 向绝对值增大的方向舍入数字 | 数值:要舍入的数值 。 位数:代表舍入的位数,1 代表小数点后一位,2 代表小数点后二位,-1 代表个位数。 | ROUNDUP(99.45, 1)=99.5 ROUNDUP(99.45, -1)=100 |
SUM | SUM(值1, [值2, ...]) | 求参数的和。 对文本或空值忽略不计。 | 值 1:要相加的第一个数值或范围。 值 2:要与数值 1 相加的其他数值或范围。 | SUM(2, 101)=103 |
AVERAGE | AVERAGE(值1, [值2, ...]) | 返回其参数的平均值。 对文本或空值忽略不计。 | 值 1:计算平均值时用到的第一个数值或范围。 值 2:计算平均值时用到的其他数值或范围。 | AVERAGE(2, 100) = 51 |
COUNT | COUNT(值1, [值2, ...]) | 求一组数据中数值的个数。 文本和空值忽略不计。 | 值 1:计数时要检查的第一个值或范围。 值 2:计数时要检查的其他值或范围。 | COUNT([1, 2, 3, 4, 5]) = 5 |
COUNTA | COUNTA(值1, [值2, ...]) | 求一组数据中数值的个数。 包括任意类型的数据,空值忽略不计。 | 值 1:计数时要检查的第一个值或范围。 值 2:计数时要检查的其他值或范围。 | COUNTA([不合格原因1, 不合格原因2]) = 2 |
MAX | MAX(值1, [值2, ...]) | 返回参数列表中的最大值 | 值 1:计算最大值时所用的第一个值或范围。 值 2:计算最大值时所用的其他值或范围。 | MAX(40, 42)=42 |
MEDIAN | MEDIAN(值1, [值2, ...]) | 返回给定数值集合的中值 | 值 1:计算中值时所用的第一个值或范围。 值 2:计算中值时所用的其他值或范围。 | MEDIAN(1, 2, 3, 4, 5)=3 |
MIN | MIN(值1, [值2, ...]) | 返回参数列表中的最小值 | 值 1:计算平均值时所用的第一个值或范围。 值 2:计算平均值时所用的其他值或范围。 | MIN(2, 5)=2 |
特殊函数
函数 | 用法 | 说明 | 参数 | 示例 |
---|---|---|---|---|
PREVALUE | PREVALUE(字段名) | 返回给定字段名的上一记录值 | 字段名: 获取值的字段名称 | PREVALUE(‘A1’) |
Change | Change(字段名,量程) | 返回给定字段名当前记录值跟上一记录值的差值,返回结果为负数时,自动加上量程数值,没有上一值时,返回0; | 字段名,量程 | Change('a1',100) Change('a1',ABS(m1-m2)) |
2.注意事项
- 计算公式配置,点击确认时,校验当前公式是否为正确输入,若错误则消息提示“当前公式无效”及提示出错位置;
- 配置了计算公式的字段类型,是可自定义的,要匹配公式运算的结果类型,否则运行时会当作异常数据处理,记录为空;