Appearance
计算公式专题:「常用公式举例」
本文持续收集常用场景的公式使用方式,提供常用场景下的公式模板
注意
本文为方便截取GIF图,均在表单内举例说明,这并不代表这些公式只能在表单中使用,在工作流的 公式计算
中也是可以使用的。
提示
举例中把所有控件都暴露出来了,实际使用时,可根据需要隐藏不希望被看到的控件。
1.根据当日日期,计算前后指定天数的日期
效果示例:

控件 指定日期
计算公式参考:
JS
今日日期 + MAX(0, 指定天数) * 1000 * 60 * 60 * 24
关于“1000 * 60 * 60 * 24”
这是一整天换算为毫秒的标准运算,因为是一个常量,也可以直接使用结果:86400000
2.首尾字符检查与去除,连续重复字符去除
效果示例:

场景说明
有一串由 特定字符
分隔的文本,每个 分隔出的子文本
可以指代一个事物,例如运单号、人名等等,当删除其中一个 子文本
后,整体文本的 首/尾/中间
便会出现多余的分隔符,此公式便是基于这一场景,为解决多余的分隔符而诞生。
思路:去重工作分为三步进行
- 连续重复字符去除
- 首字符检查与去除
- 尾字符检查与去除
拓展&疑问
连续重复字符去除
这一步放在 第一步
执行和放在 最后一步
来执行有何区别?可自行调换顺序实验和测试
提示: 差别在于首尾重复字符是否完全剔除。
控件 连续重复字符去除
计算公式参考:
JS
REPLACE_ALL(待检查文本, CONCAT("[", 去除字符, "]+"), 去除字符)
关于 CONCAT("[", 去除字符, "]+")
这一部分返回的结果是一个 正则表达式
,可以配合 REPLACE_ALL
将重复字符缩减到只剩一个。
控件 首字符检查与去除
计算公式参考:
JS
IF(
SLICE(连续重复字符去除, 1, 1) == 去除字符,
SLICE(连续重复字符去除, 2),
连续重复字符去除
)
控件 尾字符检查与去除
计算公式参考:
JS
IF(
SLICE(首字符检查与去除, LENGTH(首字符检查与去除)) == 去除字符,
SLICE(首字符检查与去除, 1, LENGTH(首字符检查与去除) - 1),
首字符检查与去除
)
3.设置奖金阶段,按照阶段发放奖金
效果示例:

场景说明
1万以下销售额,没有奖金 完成1万销售额,奖金200
完成2万销售额,奖金400
完成3万以上销售额,奖金600
控件 发放奖金
计算公式参考:
JS
IFS(
完成销售额 >= 30000, 600,
完成销售额 >= 20000, 400,
完成销售额 >= 10000, 200,
OR(IS_EMPTY(完成销售额), 完成销售额 < 10000), 0
)
关于 “OR(IS_EMPTY(完成销售额), 完成销售额 < 10000), 0”
用于判断 未输入完成销售额,或者完成销售额小于1万
并返回对应 发放奖金
IFS
本身是一个条件对应一个结果,没有符合的条件,就给不出结果
设置此项是防止 发放奖金
为空的情况。
等效公式-IF: 使用 IF
嵌套来实现,效果是一样的,参考公式如下:
JS
IF(
完成销售额 >= 30000, 600,
IF(
完成销售额 >= 20000, 400,
IF(
完成销售额 >= 10000, 200, 0
)
)
)
4.子表重复数据检查
效果示例:

注意
此方式仅能在 “以单个字段作为重复检查的条件时” 有效,多字段的组合判重则需要依赖工作流来处理,公式计算难以处理组合字段的重复检查。
控件 子表是否有重复记录?
计算公式参考:
JS
IF(
COUNT(子表.商品名称) == COUNT(SET(子表.商品名称)),
"无重复",
"警告!存在重复记录!"
)
5.替换文本中的特殊字符
场景提要
因为公式计算中不允许转义字符,所以当替换内容是 半角双引号-""、半角括号-()
这些已经被公式认定为 特殊字符
的对象时,直接在公式中转义是不可以的
例如:清除半角双引号 REPLACE_ALL(待处理文本, "\"", "")
是会警告提示,且无法保存的
文本函数中存在一类特殊函数 ⇲CHAR(),可根据输入的数值获取字符,使用该函数配合 REPLACE_ALL
便可做到替换文本中的特殊字符,以下为效果展示:

控件 清除半角双引号
计算公式参考:
JS
REPLACE_ALL(具备特殊字符的文本, CHAR(34), "")
其他特殊符号同理,此处提供计算公式占用的特殊符号的 ascii码值
,点击展开查看
- 34-半角双引号
"
- 40-半角左括号
(
- 41-半角右括号
)
- 44-半角逗号
,
- 91-半角左中括号
[
- 93-半角右中括号
]