跳到主要内容
版本:2.0.3

计算公式

1.概述

1.1应用场景

在工业生产和制造过程中,可以采集到大量的原始数据,但原始数据能够反馈的情况比较单一,通过计算公式的方式,进行原始数据采集后的处理,可用于计算产品的质量、效率和成本,如良品率、设备综合效率指标OEE、单位产品生产能耗、单位成品生产物耗等,通过自动化的数据处理,将数据变成直观可衡量的指标,帮助现场人员进行复杂计算、分析和决策。

image-20230715120155408

1.2通用说明

名词说明示例
字段当前数据表中,目标列所对应的当前行的值,用于参与公式运算[目标字段]
运算符使公式能够成立的逻辑或运算符号+、-、&、<、>、=、!= 等
函数通过特定的运算规则得到期望的输出值SUM(2, 101) = 103
参数在公式中参与计算的数字或文本TEXT(值, 格式) 中,“值”和“格式”是该公式的两个参数

1.3运算符说明

image-20230715145009098

1.4函数说明

日期函数

函数用法说明参数示例
DATEDATE(年,月,日)将输入的年月日转换为日期格式年:日期的年份部分。 月:日期的月份部分。 日:日期的日部分。DATE(2021,7,20)=2021/07/20
DATEDIFDATEDIF(起始日期, 结束日期, 单位)计算两个日期之间的天数、月数或年数。起始日期:计算中要使用的开始日期。必须是以下一种:对包含日期的单元格的引用、返回日期类型的函数、或数字。 结束日期:计算中要使用的结束日期。必须是以下一种:对包含日期的单元格的引用、返回日期类型的函数、或数字。 单位:某种时间单位的缩写字符串。例如,Y 代表年、M 代表月、D 代表天等。DATEDIF("1969-7-16", "1969-7-24", "Y")=0
DAYDAY(日期值)获取特定日期的日部分日期值:要从中提取具体几号的日期。DAY("1969-7-20")=20
DAYSDAYS(结束日期,起始日期)计算两个日期之间的天数结束日期:日期范围的结束日期。 起始日期:日期范围的起始日期。DAYS("1969-7-24", "1969-7-16")=8
HOURHOUR(时间)获取特定时间的小时部分时间:用于计算小时部分的时间。HOUR("11:40:59")=11
MINUTEMINUTE(时间)获取特定时间的分钟部分时间:用于计算分钟部分的时间。MINUTE("11:40:59")=40
MONTHMONTH(日期值)获取特定日期的月部分日期值:要从中提取月份的日期。MONTH("1969-7-20")=7
NOWNOW()获取当期日期和时间NOW()
SECONDSECOND(时间)获取特定时间的秒部分时间:用于计算秒钟部分的时间。SECOND("11:40:59")=59
TODAYTODAY()获取当前日期TODAY()
WEEKDAYWEEKDAY(日期值,[类型])将输入的日期转换为星期日期日期值:要为其确定星期几的日期。必须是以下一种:对包含日期的单元格的引用、返回日期类型的函数或者数字。 类型:表示一周开始之日的数字。若始于星期日则为 1,若始于星期一则为 2,依此类推。WEEKDAY("1969-7-20", 1)=1
WEEKNUMWEEKNUM(日期, [类型])将输入的日期转换为代表该星期为一年中第几周的数字日期:要确定其所在周序号的日期。必须是以下一种:对包含日期的单元格的引用、返回日期类型的函数或者数字。 类型:表示一周开始之日的数字。若始于星期日则为 1,若始于星期一则为 2,依此类推。WEEKNUM("1969-7-20", 1)=30
YEARYEAR(日期值)获取特定日期的年部分日期值:要从中提取年份的日期。YEAR("1969-7-20")=1969

逻辑函数

函数用法说明参数示例
ANDAND(逻辑表达式1, [逻辑表达式2, ...])当提供的所有参数均是逻辑为真时返回 TRUE;如果提供的参数中任何一个的逻辑为假则返回 FALSE。逻辑表达式 1:一个表达式或对包含表达式的单元格的引用,该表达式代表某种逻辑值(即 TRUE 或 FALSE)或者可以强制转换为逻辑值。 逻辑表达式 2:更多表示逻辑值的表达式。AND(1=1, 1=2)=false
FALSEFALSE()返回逻辑值 FALSEFALSE()
IFIF(逻辑表达式, 为 TRUE 时的返回值, [为 FALSE 时的返回值])当逻辑表达式的值为 TRUE 时返回一个值,当其为 FALSE 时返回另一个值。逻辑表达式:一个表达式或对包含表达式的单元格的引用,该表达式代表某种逻辑值,即 TRUE 或 FALSE。 为 TRUE 时的返回值:当“逻辑表达式”为 TRUE 时的返回值。 为 FALSE 时的返回值:当“逻辑表达式”为 FALSE 时的返回值。【场景】小明的成绩为 80 【公式】IF([成绩]>60,"及格","不及格") 【示例】及格
NOTNOT(逻辑函数)对其参数的逻辑求反。逻辑函数:计算结果为 TRUE 或 FALSE 的任何值或表达式。NOT(TRUE)=false
OROR(逻辑表达式1, [逻辑表达式2, ...])只要提供的参数中任何一个的逻辑为真就返回 TRUE,如果提供的所有参数均是逻辑为假则返回 FALSE。逻辑表达式1:一个表达式或对包含表达式的单元格的引用,该表达式代表某种逻辑值(即 TRUE 或 FALSE)或者可以强制转换为逻辑值。 逻辑表达式2:更多计算结果为逻辑值的表达式。OR(1=2, 1=1)=true OR(1=2, 1=3)=false
TRUETRUE()返回逻辑值 TRUE。TRUE()

文本函数

函数用法说明参数示例
CHARCHAR(数字)将数字代码转换为对应的 Unicode 字符。数字:需要转换为 Unicode 字符的数字。CHAR(10) = \n CHAR(92) = \
CONCATENATECONCATENATE(字符串1, [字符串2, ...])将一个字符串追加至另一字符串之后。字符串 1:初始字符串。 字符串 2:要在后面追加的字符串。CONCATENATE("abc", "123") = abc123
LEFTLEFT(字符串, [字符数])返回从指定字符串开头提取的子串。字符串:要返回其左侧部分的字符串。 字符数:要从“字符串”左侧返回的字符数。LEFT("abcd", 2) = ab
LENLEN(文本)返回指定的字符串的长度。文本:要返回其长度的字符串。LEN("abcd") = 4
LOWERLOWER(文本)将指定字符串中的字母转换为小写。文本:要转换为小写的字符串。LOWER("LOREM IPSUM") = lorem ipsum
MIDMID(字符串, 开始位置, 提取长度)返回指定字符串中的子串。字符串:要从中选取子串的字符串。 开始位置:要从“字符串”中开始提取的位置。“字符串”中第一个字符的索引为 1。 提取长度:需要提取的长度。MID("abcd", 1, 2) = ab
REPLACEREPLACE(文本, 位置, 长度, 新文本)将文本字符串的一部分替换为其他文本字符串。文本:其中一部分将被替换的文本。 位置:替换的开始位置(起始索引编号为 1)。 长度:文本中要替换的字符数。 新文本:要插入到原有文本中的文本。REPLACE("abcdefg", 1, 6, "xyz") = xyzg
RIGHTRIGHT(字符串, [字符数])返回从指定字符串尾部提取的子串。字符串:要返回其右侧部分的字符串。 字符数:要从“字符串”右侧返回的字符数。RIGHT("abcd", 2) = cd
TEXTTEXT(值, 格式)按照指定格式将值转换为文本。值:要转换为文本的值。 格式:自定义的文本格式,常见如:"yyyy-MM-dd HH:mm:ss"代表将日期字段转为"2021-06-30 00:00:00"的格式。TEXT( "2021-01-01" , "M月d日") = 1月1日
TODATETODATE(文本)将文本转成日期格式。文本:要转的文本值,例如: 2021/06/30TODATE("2021-06-30") = 2021-06-30
TRIMTRIM(文本)移除文本中的前导、结尾和重复空格。文本:要移除空格的文本或对包含要移除空格的文本的单元格引用TRIM(" lorem ipsum") = lorem ipsum
UPPERUPPER(文本)将指定字符串中的字母转换为大写。文本:要转换为大写的字符串。UPPER("lorem ipsum") = LOREM IPSUM

数据函数

函数用法说明参数示例
ABSABS(数值)展示数值的绝对值。数值:要返回其绝对值的数值。ABS(-2) = 2
RANDRAND()返回 0 和 1 之间的一个随机实数。 若要生成 a 与 b 之间的随机实数,使用RAND()*(b-a)+aRAND()=0.18834828
RANDBETWEENRANDBETWEEN(最小值, 最大值)返回位于两个指定数之间的一个随机整数最小值:将返回的最小整数。 最大值:将返回的最大整数。RANDBETWEEN(1,100)=58
ROUNDROUND(数值, 位数)将数值的指定位数以下进行四舍五入。数值:要四舍五入的数值 。 位数:代表舍入的位数,1 代表小数点后一位,2 代表小数点后二位,-1 代表个位数。ROUND(99.44, 1)=99.4 ROUND(99.44, -1)=100
ROUNDDOWNROUNDDOWN(数值, 位数)向绝对值减小的方向舍入数字数值:要舍入的数值。 位数:代表舍入的位数,1 代表小数点后一位,2 代表小数点后二位,-1 代表个位数。ROUNDDOWN(99.44, 1)=99.4 ROUNDDOWN(99.44, -1)=90
ROUNDUPROUNDUP(数值, 位数)向绝对值增大的方向舍入数字数值:要舍入的数值 。 位数:代表舍入的位数,1 代表小数点后一位,2 代表小数点后二位,-1 代表个位数。ROUNDUP(99.45, 1)=99.5 ROUNDUP(99.45, -1)=100
SUMSUM(值1, [值2, ...])求参数的和。 对文本或空值忽略不计。值 1:要相加的第一个数值或范围。 值 2:要与数值 1 相加的其他数值或范围。SUM(2, 101)=103
AVERAGEAVERAGE(值1, [值2, ...])返回其参数的平均值。 对文本或空值忽略不计。值 1:计算平均值时用到的第一个数值或范围。 值 2:计算平均值时用到的其他数值或范围。AVERAGE(2, 100) = 51
COUNTCOUNT(值1, [值2, ...])求一组数据中数值的个数。 文本和空值忽略不计。值 1:计数时要检查的第一个值或范围。 值 2:计数时要检查的其他值或范围。COUNT([1, 2, 3, 4, 5]) = 5
COUNTACOUNTA(值1, [值2, ...])求一组数据中数值的个数。 包括任意类型的数据,空值忽略不计。值 1:计数时要检查的第一个值或范围。 值 2:计数时要检查的其他值或范围。COUNTA([不合格原因1, 不合格原因2]) = 2
MAXMAX(值1, [值2, ...])返回参数列表中的最大值值 1:计算最大值时所用的第一个值或范围。 值 2:计算最大值时所用的其他值或范围。MAX(40, 42)=42
MEDIANMEDIAN(值1, [值2, ...])返回给定数值集合的中值值 1:计算中值时所用的第一个值或范围。 值 2:计算中值时所用的其他值或范围。MEDIAN(1, 2, 3, 4, 5)=3
MINMIN(值1, [值2, ...])返回参数列表中的最小值值 1:计算平均值时所用的第一个值或范围。 值 2:计算平均值时所用的其他值或范围。MIN(2, 5)=2

特殊函数

函数用法说明参数示例
PREVALUEPREVALUE(字段名)返回给定字段名的上一记录值字段名: 获取值的字段名称PREVALUE(‘A1’)
ChangeChange(字段名,量程)返回给定字段名当前记录值跟上一记录值的差值,返回结果为负数时,自动加上量程数值,没有上一值时,返回0;字段名,量程Change('a1',100) Change('a1',ABS(m1-m2))

2.注意事项

  1. 计算公式配置,点击确认时,校验当前公式是否为正确输入,若错误则消息提示“当前公式无效”及提示出错位置;
  2. 配置了计算公式的字段类型,是可自定义的,要匹配公式运算的结果类型,否则运行时会当作异常数据处理,记录为空;