细读牛中伟老师发表的《不借助聚合表直接在当前子表单中实现数字汇总的一种方法(简道云开发高阶技能)》一文后,继续发挥“山寨+优化”的精简精神,在牛老师原文基础上进行公式优化。
简化的地方:
1、【收款金额补位并截取右9位】字段: 牛老师原公式:RIGHT(CONCATENATE("#########",项目收款记账明细.收款金额,","),9)
优化后:TEXT(项目收款记账明细.收款金额,"00000000.00")
2、【项目收款记账明细.当前已收款总金额】字段:牛老师原公式:=SUM(VALUE(SPLIT(CONCATENATE(SPLIT(LEFT(集合,项目收款记账明细.序号*9),"#")),",")[0]),VALUE(SPLIT(CONCATENATE(SPLIT(LEFT(集合,项目收款记账明细.序号*9),"#")),",")[1]),VALUE(SPLIT(CONCATENATE(SPLIT(LEFT(集合,项目收款记账明细.序号*9),"#")),",")[2]),VALUE(SPLIT(CONCATENATE(SPLIT(LEFT(集合,项目收款记账明细.序号*9),"#")),",")[3]),VALUE(SPLIT(CONCATENATE(SPLIT(LEFT(集合,项目收款记账明细.序号*9),"#")),",")[4]))
此公式弊端需要预先考虑总行数问题,需要按预估行数决定公式重复写多长。例如:牛老师本例中预估了5行,但是如果子表行数超过5行,将会出错。如果预估200行,那行代码将会写很长。
优化后:SUMPRODUCT(SPLIT(LEFT(金额集合,项目收款记账明细.序号*11+项目收款记账明细.序号),","))
具体函数,不再解释,详见牛老师原文或官方帮助文档
测试页:https://rwre764grq.jiandaoyun.com/f/5fb71e3bd3313e0006db6dd8
编辑于 2020-11-20 10:56
|