案例:快速上手 DIY 函数公式的 5 个步骤

楼主
简道云应用场景探索者

编写公式并没有想象中的那么难:

 

你会做青椒炒肉丝和番茄炒鸡蛋这两道菜吗?不会做,也没关系,只要知道就可以!

现在,你就有了一套“一荤一素”的搭配方式,它就可以看成是一个公式,简单吧!

 

青椒炒肉丝(青椒,肉丝)

番茄炒鸡蛋 (番茄,鸡蛋)

一荤一素(青椒炒肉丝,番茄炒鸡蛋)

 

公式的本质就是:

结合一个或多个已知的函数,通过运算的方式,得出所需要的结果。

 

在翻论坛问答时看到如下一个问题

 

简道云:“日期范围”根据填写日期算填写日期所属周的第一天(星期一)的日期及最后一天(星期日)的日期,填写日期已默认为当时,“日期范围”字段怎么写公式 ?

 

那么,在日常使用简道云时,我们如何去推导一个公式呢,本篇借用这个问题,一起来推导下。

 

常用 推导公式的 5 个步骤

 

1、明确需求:需要有一个清晰的需求,最好写在纸上;

2、分析需求:将需求进行尽量多次拆解,看看都有哪些部分组成或有什么样的规律;

3、查找函数:围绕相关分析,找到相应的或较为接近的函数;

4、分步实现:结合前期的分析和查找到的函数,分步解决每一个部分;

5、整合结果:将分布实现的有效公式整合为一个公式。

 

如何 通过5个步骤 推导公式

 

1、明确需求:需要有一个清晰的需求,最好写在纸上;

 

计算出指定日期所在周的开始日期与结束日期分别是什么,以及显示本周的日期范围。

 

2、分析需求:将需求进行尽量多次拆解,看看都有哪些部分组成或有什么样的规律;

 

通过分析本次的问题可以得出以下内容:

一周有7天,以1至7代替,指定日期是其中的某一个数字

当指定日期为星期三时,以3代替,那么:

1=3-2

7=3+4

当指定日期为星期四时,以4代替,那么:

1=4-3

7=4+3

假如指定日期的星期为 X , 那么结合以上规律可以得出以公式:

1= X - ( X - 1 )

7= X + ( 7 - X )

 

3、查找函数:围绕相关分析,找到相应的或较为接近的函数;

 

结合本次问题及相关分析,可以大体猜测到用到的函数与日期和星期相关

下面分别以“日期”与“星期”为关键词在 帮助文档 中检索,找到感觉有用的函数

 

TEXT(date, text_format)  将日期转换成特定格式的文本

 

 

DATE(year,month,day,hour,minute,second) 将年月日(时分秒)转换为日期对象。

 

 

4、分步实现:结合前期的分析和查找到的函数,分步解决每一个部分;

 

根据当前日期计算是星期几(当前星期)

TEXT(DATE(当前日期),"E")

观测结果会发现,当为周日时,会显示为“0”,这时候可以通过 IF( ) 函数进行一下优化

IF(TEXT(DATE(当前日期),"E")=="0","7",TEXT(DATE(当前日期),"E"))

因为需要的是后期用到的是数字而非文本,可以通过 VALUE( ) 函数再进行一下优化

VALUE(IF(TEXT(DATE(当前日期),"E")=="0","7",TEXT(DATE(当前日期),"E")))

 

 

结合DATE( )函数,分别计算出开始日期与结束日期

在这个问题中会发现,主要变化的是“日”,“年”和“月”都保持不变,需要分别用到 YEAR( ) 、MONTH( ) 、DAY( ) 三个函数提取当前日期的年、月、日,然后通过DATE( )函数生成新的日期。

结合 1= X - ( X - 1 ),7= X + ( 7 - X ) 这两个计算方式,可以得出以下公式:

本周开始日期:DATE(YEAR(当前日期),MONTH(当前日期),DAY(当前日期)-(当前星期-1))

本周结束日期:DATE(YEAR(当前日期),MONTH(当前日期),DAY(当前日期)+(7-当前星期))

 

 

5、整合结果:将分布实现的有效公式整合为一个公式。

 

通过 CONCATENATE( ) 函数,组合分步实现的各公式,并实现预期效果

CONCATENATE(TEXT(DATE(DATE(YEAR(当前日期),MONTH(当前日期),DAY(当前日期)-(VALUE(IF(TEXT(DATE(当前日期),"E")=="0","7",TEXT(DATE(当前日期),"E")))-1))),"yyyy-MM-dd")," ~ ",TEXT(DATE(DATE(YEAR(当前日期),MONTH(当前日期),DAY(当前日期)+(7-VALUE(IF(TEXT(DATE(当前日期),"E")=="0","7",TEXT(DATE(当前日期),"E")))))),"yyyy-MM-dd"))

 

 

推导公式的方式 不只这一种

 

以上只是常规情况下的按部就班的线性推导方式,当对简道云中的函数有一定了解后,多发散思维,多实践尝试,或许会遇到更为精简、高效的实现方式,比如曾对金额转大写公式的一次优化尝试,详细内容可查阅 【妙简:懒人福音 金额大写公式也可以这么简单】。

 

多看下帮助文档中函数部分的内容,编写公式,其实并没有想象中的那么难,特别是对于比较熟悉EXCEL函数的朋友来说,会更容易上手,当遇上较为复杂的问题时,往往需要的是一次次的尝试,需要的是更多一点的耐心。

 

更多内容

 

导航:云函数&前端事件 内容集 

汇总:论坛中发表过的所有帖子

 

更多沟通交流可添加微信(zmlnow)

添加时请备注:简道云

 

 

 

都看到这里了

如果您觉得有用

赞一个呗

赏一个呗

偶会更有动力哈

分享扩散:

沙发
发表于 2021-12-23 08:52:37
板凳
发表于 2022-1-16 15:23:36
nice
地板
发表于 2022-1-22 15:49:31
你这思路杠杠的,只是其他案例的思路不好整理
5楼
发表于 2022-4-8 14:33:25
学习了
6楼
发表于 2022-6-11 13:33:04
牛!学习学习!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

13回帖数 5关注人数 27333浏览人数
最后回复于:2023-5-5 11:34

返回顶部 返回列表