妙简:懒人福音 金额大写公式也可以这么简单

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

在日常使用简道云中,很多场景下需要将录入的数字字段的值转换为大写,比如合同中的金额需要转成大写进行打印。(这句话来自帮助文档)

 

 

温馨提示

 

2022-05-11更新中,官方已新增金额大写公式 RMBCAP ( ) ,详见  帮助文档

以下内容现可作为一种公式优化的思路,仅供相互交流学习。

 

一、现有方法总结

 

目前可使用的方式有两种,当然也可以说三种:

1、加个文本框,直接自己填上去;

壹、贰、叁、肆、伍、陆、柒、捌、玖、拾

2、抄段公式,对录入的数字进行处理;

帮助文档 https://hc.jiandaoyun.com/blog/11399

3、通过云函数,进行处理。

金额大写云函数 https://bbs.fanruan.com/thread-135653-1-1.html

 

二、帮助文档公式

 

方法一、三没什么可说的了,本次来谈下方法二。

近期,因事要用到这个公式,记得帮助文档中有,就查了下,本打算直接拿来用的;

一看,懵了,这个不适用于我这种懒人,每次多达27处需要手动替换。

 

CONCATENATE("人民币",IF(金额>=0,IF(INT(金额)-金额==0,TEXT(INT(金额),"[Num2]")+"元",IF(INT(金额*10)-金额*10==0,TEXT(INT(金额),"[Num2]")+"元"+TEXT(INT(金额*10)-INT(金额)*10,"[Num2]")+"角",TEXT(INT(金额),"[Num2]")+"元"+TEXT(INT(金额*10)-INT(金额)*10,"[Num2]")+"角"+TEXT(INT(金额*100)-INT(金额*10)*10,"[Num2]")+"分")),IF(INT(金额*-1)-金额*-1==0,"负"+TEXT(INT(金额*-1),"[Num2]")+"元",IF(INT(金额*10*-1)-金额*10*-1==0,"负"+TEXT(INT(金额*-1),"[Num2]")+"元"+TEXT(INT(金额*10*-1)-INT(金额*-1)*10,"[Num2]")+"角","负"+TEXT(INT(金额*-1),"[Num2]")+"元"+TEXT(INT(金额*10*-1)-INT(金额*-1)*10,"[Num2]")+"角"+TEXT(INT(金额*100*-1)-INT(金额*10*-1)*10,"[Num2]")+"分"))))

 

三、最新优化公式

 

如果多处使用,想想都可怕,每次都是27次啊,造吧,看看有没有更简单的方式;

还真给摸索出来了,感谢 SPLIT( )

效果及公式如下,仅需要手动替换 4 处或者更少。

效果体验 https://tnvew1vqtq.jiandaoyun.com/f/61816ad243662500074552e3

 

CONCATENATE(IF(金额<0,"负",""),SPLIT(CONCATENATE(TEXT(INT(SPLIT(TEXT(金额,"[Num0]"),".")[0]),"[Num2]"),"圆",TEXT(INT(SPLIT(SPLIT(TEXT(金额,"[Num0]"),".")[1],"")[0]),"[Num2]"),"角",TEXT(INT(SPLIT(SPLIT(TEXT(金额,"[Num0]"),".")[1],"")[1]),"[Num2]"),"分"),"-"),"整")

 

四、公式优化思路

 

1、经测试可发现,通过text()基本已可以得到预想的值,有出入的仅为角和分;

2、那么不妨通过split()基于小数点直接分割成左右两部分,各处理各的,然后拼接起来;

3、左边部分通过text(数值,"[Num2]")即可以得到对应的大写;

4、右边部分继续用split()分割,第一位即是角,第二位即是分;

5、将相应分割出来的数字经text()转为大写,与圆角分拼在一起,即为所要最终大写。

 

五、更多内容

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

 

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

添加时请备注:简道云

 

 

 

都看到这里了

如果您觉得有用

赞一个呗

赏一个呗

偶会更有动力哈

分享扩散:
参与人数 +2 F豆 +1 F币 +15 理由
帆软用户bCqiRmxT9j + 1 默默地点个赞,然后闪人
云团 + 15 太棒了,给你32个赞,么么哒

查看全部评分

沙发
发表于 2021-11-4 00:29:53
很棒哦
板凳
发表于 2021-11-4 08:53:04 发布于APP客户端
优秀
地板
发表于 2021-11-4 08:55:27
太棒了,就需要您这样的大神不断探索改进,给我们小白指路,希望多在子表单方面研究分享
5楼
发表于 2022-3-29 14:00:20
零角零分=》还需要完善一下
6楼
发表于 2023-1-2 12:09:23
现在有 RMBCAP 插件也可以https://hc.jiandaoyun.com/doc/9034#rmbcap
7楼
发表于 2023-4-14 11:58:06
<p>我有1个问题不解:</p>
<p>公式中有这么一行代码: SPLIT(TEXT(金额,"[Num0]"),".")[0]) ,SPLIT函数的作用是将文本按指定字符串分割成数组。</p>
<p>所以,我的理解,SPLIT(TEXT(金额,"[Num0]"),".")[0]) 应该是数组的下标,但是简道云中似乎找不到直接把数组下标转换为文本或者数字的函数,而INT函数的参数必须是数字,所以编辑公式时总是会显示参数不正确。</p>
<p>有没有更优化的解决之道呢?</p>
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

6回帖数 1关注人数 13414浏览人数
最后回复于:2023-4-14 11:58

返回顶部 返回列表