魔方网表 让信息化更简单

 找回密码
 注册
查看: 23670|回复: 29

[模板] 人民币大写 精简公式

[复制链接]
fyzzg 发表于 2010-3-29 11:12:08 | 显示全部楼层 |阅读模式
本帖最后由 fyzzg 于 2011-9-4 21:47 编辑

捕获大写2.JPG 大写1.JPG
解决零角零分问题,替换为“整”               2011-6-27

修改后公式:
  1. SUBSTITUTE(SUBSTITUTE(MFCNUM(INT($MF(金额)$))&"元"&MFCNUM(INT(ROUND($MF(金额)$,2)*10)-INT(ROUND($MF(金额)$,2))*10)&"角"&MFCNUM(INT(ROUND($MF(金额)$,2)*100)-INT(ROUND($MF(金额)$,2)*10)*10)&"分","零角零分","整"),"零分","整")
复制代码

---------------------------------------
函数SUBSTITUTE()替换字符串;
函数MFCNUM()大写金额;
函数ROUND()四舍五入;
函数INT()取整。
---------------------------------------
修改公式:解决拾元,拾万元 缺壹问题。2011-9-2
  1. IF(left(MFCNUM($MF(金额)$),1)="拾","壹"&SUBSTITUTE(SUBSTITUTE(MFCNUM(INT($MF(金额)$))&"元"&MFCNUM(INT(ROUND($MF(金额)$,2)*10)-INT(ROUND($MF(金额)$,2))*10)&"角"&MFCNUM(INT(ROUND($MF(金额)$,2)*100)-INT(ROUND($MF(金额)$,2)*10)*10)&"分","零角零分","整"),"零分","整"),SUBSTITUTE(SUBSTITUTE(MFCNUM(INT($MF(金额)$))&"元"&MFCNUM(INT(ROUND($MF(金额)$,2)*10)-INT(ROUND($MF(金额)$,2))*10)&"角"&MFCNUM(INT(ROUND($MF(金额)$,2)*100)-INT(ROUND($MF(金额)$,2)*10)*10)&"分","零角零分","整"),"零分","整"))
复制代码
360截图20110902082304325.jpg

人民币大写-1_2010_10_09_15_20_46.mfd

5.1 KB, 下载次数: 4969

评分

1

查看全部评分

anntonny 发表于 2010-4-3 19:25:40 | 显示全部楼层
本帖最后由 anntonny 于 2010-4-3 19:30 编辑

考虑 INT函数的四舍五入了吗?
应该测试一下 0.1 0.4 0.5 0.6 0.9 1.1 1.4 1.5 1.6 1.9 的数据

?INT(12.5) 显示12


  ?INT(-12.5) 显示 -13


  STROE -12.5 To nNumber


  ?INT(nNumber) 显示-13
回复

使用道具 举报

admin 发表于 2010-4-3 20:59:10 | 显示全部楼层
int就不是四舍五入函数,关于int仔细看一下函数说明
回复

使用道具 举报

wgf8088 发表于 2010-4-22 02:18:09 | 显示全部楼层
看看怎么实现看看怎么实现看看怎么实现
回复

使用道具 举报

yjd000 发表于 2010-8-7 22:37:12 | 显示全部楼层
有点问题,这个大写不太规范!!!比如:153.50元,应该是壹佰伍拾叁元伍角整...但按楼主的,却是:壹佰伍拾叁元伍角零分.....不太好看..呵呵 个人一点建议!!!
回复

使用道具 举报

 楼主| fyzzg 发表于 2010-8-8 07:47:37 | 显示全部楼层

RE: yjd000

本帖最后由 fyzzg 于 2011-7-2 09:06 编辑

方法:利用字符串替换函数将零角零分、零分替换为整。
回复

使用道具 举报

pobopo 发表于 2011-4-5 01:59:02 | 显示全部楼层
中文大写金额.png


if(and(left(right(MFCNUM($MF(金额)$),3),1)<>".",left(right(MFCNUM($MF(金额)$),2),1)<>"."),MFCNUM($MF(金额)$)&"元正",if(and(find(".",mfcnum($MF(金额)$))<>0,len(mid(mfcnum($MF(金额)$),find(".",mfcnum($MF(金额)$))+1,2))=2,left(right(mfcnum($MF(金额)$),2),1)="零"),mid(mfcnum($MF(金额)$),1,find(".",mfcnum($MF(金额)$))-1)&"元"&right(mfcnum($MF(金额)$),2)&"分",if(and(find(".",$MF(金额)$)<>0,len(mid(mfcnum($MF(金额)$),find(".",mfcnum($MF(金额)$))+1,2))=2,left(right(mfcnum($MF(金额)$),2),1)<>"零"),mid(mfcnum($MF(金额)$),1,find(".",mfcnum($MF(金额)$))-1)&"元"&left(right(mfcnum($MF(金额)$),2),1)&"角"&right(mfcnum($MF(金额)$),1)&"分",mid(mfcnum($MF(金额)$),1,find(".",mfcnum($MF(金额)$))-1)&"元"&right(mfcnum($MF(金额)$),1)&"角正")))
回复

使用道具 举报

pobopo 发表于 2011-4-5 10:34:56 | 显示全部楼层
if(mfisnull(find(".",mfcnum($MF(金额)$))),MFCNUM($MF(金额)$)&"元正",if(and(find(".",mfcnum($MF(金额)$))<>0,len(mid(mfcnum($MF(金额)$),find(".",mfcnum($MF(金额)$))+1,2))=2,left(right(mfcnum($MF(金额)$),2),1)="零"),mid(mfcnum($MF(金额)$),1,find(".",mfcnum($MF(金额)$))-1)&"元"&right(mfcnum($MF(金额)$),2)&"分",if(and(find(".",$MF(金额)$)<>0,len(mid(mfcnum($MF(金额)$),find(".",mfcnum($MF(金额)$))+1,2))=2,left(right(mfcnum($MF(金额)$),2),1)<>"零"),mid(mfcnum($MF(金额)$),1,find(".",mfcnum($MF(金额)$))-1)&"元"&left(right(mfcnum($MF(金额)$),2),1)&"角"&right(mfcnum($MF(金额)$),1)&"分",mid(mfcnum($MF(金额)$),1,find(".",mfcnum($MF(金额)$))-1)&"元"&right(mfcnum($MF(金额)$),1)&"角正")))
回复

使用道具 举报

 楼主| fyzzg 发表于 2011-6-27 21:38:31 | 显示全部楼层
解决零角零分问题,替换为“整”

修改后公式:

SUBSTITUTE(SUBSTITUTE(MFCNUM(INT($MF(金额)$))&"元"&MFCNUM(INT(ROUND($MF(金额)$,2)*10)-INT(ROUND($MF(金额)$,2))*10)&"角"&MFCNUM(INT(ROUND($MF(金额)$,2)*100)-INT(ROUND($MF(金额)$,2)*10)*10)&"分","零角零分","整"),"零分","整")
回复

使用道具 举报

yoeast 发表于 2011-7-18 12:18:46 | 显示全部楼层
9# fyzzg

学习了,呵呵,比我方法好。
回复

使用道具 举报

xxjsk 发表于 2011-8-31 18:09:18 | 显示全部楼层
实验后,¥128907.56,显示为“拾贰万捌仟玖佰零柒元伍角陆分”。
能不能显示为“壹拾贰万捌仟玖佰零柒元伍角陆分”?
回复

使用道具 举报

 楼主| fyzzg 发表于 2011-9-2 08:08:45 | 显示全部楼层
本帖最后由 fyzzg 于 2011-9-2 08:38 编辑
xxjsk 发表于 2011-8-31 18:09
实验后,¥128907.56,显示为“拾贰万捌仟玖佰零柒元伍角陆分”。
能不能显示为“壹拾贰万捌仟玖佰零柒元伍 ...


加一个判断条件!
360截图20110902082138405.jpg

  1. IF(left(MFCNUM($MF(金额)$),1)="拾","壹"&SUBSTITUTE(SUBSTITUTE(MFCNUM(INT($MF(金额)$))&"元"&MFCNUM(INT(ROUND($MF(金额)$,2)*10)-INT(ROUND($MF(金额)$,2))*10)&"角"&MFCNUM(INT(ROUND($MF(金额)$,2)*100)-INT(ROUND($MF(金额)$,2)*10)*10)&"分","零角零分","整"),"零分","整"),SUBSTITUTE(SUBSTITUTE(MFCNUM(INT($MF(金额)$))&"元"&MFCNUM(INT(ROUND($MF(金额)$,2)*10)-INT(ROUND($MF(金额)$,2))*10)&"角"&MFCNUM(INT(ROUND($MF(金额)$,2)*100)-INT(ROUND($MF(金额)$,2)*10)*10)&"分","零角零分","整"),"零分","整"))
复制代码
回复

使用道具 举报

xxjsk 发表于 2011-9-16 11:54:08 | 显示全部楼层
fyzzg 发表于 2011-9-2 08:08
加一个判断条件!

谢谢你的指点了
回复

使用道具 举报

scjd 发表于 2011-12-21 15:11:40 | 显示全部楼层
fyzzg 发表于 2011-9-2 08:08
加一个判断条件!

这个没搞懂

这个没搞懂
回复

使用道具 举报

scjd 发表于 2011-12-21 15:17:14 | 显示全部楼层
16.4、17.4、18.4、19.4都会加-壹分
回复

使用道具 举报

scjd 发表于 2011-12-21 16:41:56 | 显示全部楼层
我现在改成这个了,哈哈

IF(left(MFCNUM($MF(金额)$),1)="拾","壹"&if(mfisnull(find(".",mfcnum($MF(金额)$))),MFCNUM($MF(金额)$)&"元正",if(and(find(".",mfcnum($MF(金额)$))<>0,len(mid(mfcnum($MF(金额)$),find(".",mfcnum($MF(金额)$))+1,2))=2,left(right(mfcnum($MF(金额)$),2),1)="零"),mid(mfcnum($MF(金额)$),1,find(".",mfcnum($MF(金额)$))-1)&"元"&right(mfcnum($MF(金额)$),2)&"分",if(and(find(".",$MF(金额)$)<>0,len(mid(mfcnum($MF(金额)$),find(".",mfcnum($MF(金额)$))+1,2))=2,left(right(mfcnum($MF(金额)$),2),1)<>"零"),mid(mfcnum($MF(金额)$),1,find(".",mfcnum($MF(金额)$))-1)&"元"&left(right(mfcnum($MF(金额)$),2),1)&"角"&right(mfcnum($MF(金额)$),1)&"分",mid(mfcnum($MF(金额)$),1,find(".",mfcnum($MF(金额)$))-1)&"元"&right(mfcnum($MF(金额)$),1)&"角正"))),if(mfisnull(find(".",mfcnum($MF(金额)$))),MFCNUM($MF(金额)$)&"元正",if(and(find(".",mfcnum($MF(金额)$))<>0,len(mid(mfcnum($MF(金额)$),find(".",mfcnum($MF(金额)$))+1,2))=2,left(right(mfcnum($MF(金额)$),2),1)="零"),mid(mfcnum($MF(金额)$),1,find(".",mfcnum($MF(金额)$))-1)&"元"&right(mfcnum($MF(金额)$),2)&"分",if(and(find(".",$MF(金额)$)<>0,len(mid(mfcnum($MF(金额)$),find(".",mfcnum($MF(金额)$))+1,2))=2,left(right(mfcnum($MF(金额)$),2),1)<>"零"),mid(mfcnum($MF(金额)$),1,find(".",mfcnum($MF(金额)$))-1)&"元"&left(right(mfcnum($MF(金额)$),2),1)&"角"&right(mfcnum($MF(金额)$),1)&"分",mid(mfcnum($MF(金额)$),1,find(".",mfcnum($MF(金额)$))-1)&"元"&right(mfcnum($MF(金额)$),1)&"角正"))))
回复

使用道具 举报

清新 发表于 2011-12-21 21:16:46 | 显示全部楼层
scjd 发表于 2011-12-21 15:17
16.4、17.4、18.4、19.4都会加-壹分

可能是魔方数据精度问题。
回复

使用道具 举报

kiss0880 发表于 2014-4-24 15:27:59 | 显示全部楼层
总金额出现负数怎么办啊?
回复

使用道具 举报

pobopo 发表于 2014-8-23 04:05:14 | 显示全部楼层
本帖最后由 pobopo 于 2014-8-23 04:20 编辑
scjd 发表于 2011-12-21 16:41
我现在改成这个了,哈哈

IF(left(MFCNUM($MF(金额)$),1)="拾","壹"&if(mfisnull(find(".",mfcnum($MF(金 ...


SUBSTITUTE(SUBSTITUTE(IF(left(MFCNUM($MF(金额)$),1)="拾","壹"&if(mfisnull(find(".",mfcnum($MF(金额)$))),MFCNUM($MF(金额)$)&"元正",if(and(find(".",mfcnum($MF(金额)$))<>0,len(mid(mfcnum($MF(金额)$),find(".",mfcnum($MF(金额)$))+1,2))=2,left(right(mfcnum($MF(金额)$),2),1)="零"),mid(mfcnum($MF(金额)$),1,find(".",mfcnum($MF(金额)$))-1)&"元"&right(mfcnum($MF(金额)$),2)&"分",if(and(find(".",$MF(金额)$)<>0,len(mid(mfcnum($MF(金额)$),find(".",mfcnum($MF(金额)$))+1,2))=2,left(right(mfcnum($MF(金额)$),2),1)<>"零"),mid(mfcnum($MF(金额)$),1,find(".",mfcnum($MF(金额)$))-1)&"元"&left(right(mfcnum($MF(金额)$),2),1)&"角"&right(mfcnum($MF(金额)$),1)&"分",mid(mfcnum($MF(金额)$),1,find(".",mfcnum($MF(金额)$))-1)&"元"&right(mfcnum($MF(金额)$),1)&"角正"))),if(mfisnull(find(".",mfcnum($MF(金额)$))),MFCNUM($MF(金额)$)&"元正",if(and(find(".",mfcnum($MF(金额)$))<>0,len(mid(mfcnum($MF(金额)$),find(".",mfcnum($MF(金额)$))+1,2))=2,left(right(mfcnum($MF(金额)$),2),1)="零"),mid(mfcnum($MF(金额)$),1,find(".",mfcnum($MF(金额)$))-1)&"元"&right(mfcnum($MF(金额)$),2)&"分",if(and(find(".",$MF(金额)$)<>0,len(mid(mfcnum($MF(金额)$),find(".",mfcnum($MF(金额)$))+1,2))=2,left(right(mfcnum($MF(金额)$),2),1)<>"零"),mid(mfcnum($MF(金额)$),1,find(".",mfcnum($MF(金额)$))-1)&"元"&left(right(mfcnum($MF(金额)$),2),1)&"角"&right(mfcnum($MF(金额)$),1)&"分",mid(mfcnum($MF(金额)$),1,find(".",mfcnum($MF(金额)$))-1)&"元"&right(mfcnum($MF(金额)$),1)&"角正")))),"零元零",""),"零元","")

截图-魔方网表-人民币大写-2014-08-23_0415.png
回复

使用道具 举报

liuhaier 发表于 2015-1-9 00:10:26 | 显示全部楼层
Mark,这个有用。。。。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则


Archiver|手机版|小黑屋|魔方软件 ( 京ICP备08008787号 )

京公网安备 11010702001722号

GMT+8, 2024-3-29 20:38 , Processed in 0.076438 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表