Excel中金额小写转大写,职场小技能,值得学习

天天见闻 天天见闻 2022-03-19 教育 阅读: 324
摘要: 对于做财务的同学应该经常会遇到要求把金额用大写的方式展示吧,如下图这样。今天小编就和大家分享如何把数字金额转换为大写金额。Excel本身自带了中文大写数字格式,但是实际使用不仅容易,下面我们一起来看看吧。这种方式有几个问题:①没有元角分单位;②有小数点;③没有包含整字。函数作用;处理小写数字转大写数字;

对于做财务的同学应该经常会遇到要求把金额用大写的方式展示吧,如下图这样。

Excel中金额小写转大写,职场小技能,值得学习

今天小编就和大家分享如何把数字金额转换为大写金额。

1、单元格格式

Excel本身自带了中文大写数字格式,但是实际使用不仅容易,下面我们一起来看看吧。

不知道大家还记不记得在单元格格式中数字类别类别下有个特殊格式大写一到十,这个格式下就有中文大写数字格式。

Excel中金额小写转大写,职场小技能,值得学习

我们直接用开头的数据来试试,看看效果,也好做个对比。

Excel中金额小写转大写,职场小技能,值得学习

看到结果应该知道小编为什么说不尽如意了吧。这种方式有几个问题:①没有元角分单位;②有小数点;③没有包含整字。

2、NUMBERSTRING函数

NUMBERSTRING函数是Excel中的一个隐藏函数,就是在函数列表里查不到的,我们也就不去研究Excel出于什么原因没有公开这个函数了。

函数格式:「=NUMBERSTRING(VALUE,TYPE)」;

函数作用;处理小写数字转大写数字;

说明:VALUE表示要转换的数字;TYPE有三种类型可选为「1、2、3」,每种类型对应一种展示大写方式。

注意点:这个函数只支持正整数,不支持小数。

我们来看看三种类型的效果对比:

Excel中金额小写转大写,职场小技能,值得学习

从结果上来看类型参数为2的是我们需要的,并且我们发现也是没有单位没有整字的,而且函数不能处理小数。我们可以看下效果:

Excel中金额小写转大写,职场小技能,值得学习

而且我们还发现如果直接使用小数,结果会被四舍五入。

不过这些都不是问题,因为是函数所有操作空间就很多,我们可以进行加工得到我们想要的。

我们先来解决四舍五入的问题。今天我们来学习一个新函数TRUNC。这个函数很简单,主要作用是把数字的小数部分截掉,保留整数部分,语法:TRUNC(数字)。

然后我们来解决小数部分。既然NUMBERSTRING函数只能处理整数,那么如果我们把小数部分转为整数不就行了吗?而且我们只需要处理角和分也就是两个字。

小编第一个想到的是截取函数,然后定位到角分,方案是可以的,就是公式写出来很长很繁琐。

如下图,如一个两位小数,我们首先把这个两位小数乘以10,然后对结果截取整数部分得到金额1,那么十分位就变成个位了;然后对这个两位小数直接截取整数部分再乘以10得到金额2,并且金额2的个位一定是0,而且金额1和金额2位数也一定相等,只要把金额1减金额2就可得到角了。

Excel中金额小写转大写,职场小技能,值得学习

大写一到十_大写1到10_1到九大写

同理「=TRUNC(A5*100)-TRUNC(A5*10)*10」可得分。

现在四舍五入,角,分问题都解决了,我们把公式拼接一下就可以了。最终得到公式:「=NUMBERSTRING(TRUNC(B5),2)&"元"&NUMBERSTRING(TRUNC(B5*10)-TRUNC(B5)*10,2)&"角"&NUMBERSTRING(TRUNC(B5*100)-TRUNC(B5*10)*10,2)&"分"」,我们看看效果:

Excel中金额小写转大写,职场小技能,值得学习

看到结果还是不是很理想,还是有很多问题,整数结尾应该是"元整",角为有值分位没值的结尾应该是"角整",分位有值的且角位为0的应该是"零玖分"这样,后面不应该有"零分"。当然这些问题也可通过IF函数在处理,但是这就会导致公式很长。

小编发现主要问题就是在小数部分的处理上,因此我们可以选择把小数部分复杂的处理交给VBA处理,代码如下:

'获取小数部分大写金额
Function GetDecimal(cell)
  Dim arrResult() As String
  '截取小数点
  arrResult = VBA.Split(cell, ".")
  Dim iArr As Integer
  iArr = UBound(arrResult)
  '没有小数部分直接返回"元整"
  If iArr = 0 Then
    GetDecimal = GetDecimal & "元整"
    '有小数部分且是格式正确
  ElseIf iArr = 1 Then
    Dim strSmall As String
    strSmall = arrResult(1)
    Dim iSmall As Integer
    Dim strJiao, strFen As String
    '获取小数位数
    iSmall = Len(strSmall)
    '一位小数则为分
    If iSmall = 1 Then
    	strJiao = getUpperCase(strSmall)
    '两位小数则为分角
    ElseIf iSmall = 2 Then
      strJiao = getUpperCase(Left(strSmall, 1))
      strFen = getUpperCase(Right(strSmall, 1))
    '大于两位小数只取前两位分角
    Else
      strJiao = getUpperCase(Left(strSmall, 1))
      strFen = getUpperCase(Mid(strSmall, 2, 1))
    End If
    '如 1.00 为 壹元整
    If (strFen = "" Or strFen = "零") And strJiao = "零" Then
    	GetDecimal = GetDecimal & "元整"
    '如 1.10 为 壹元壹角整
    ElseIf (strFen = "" Or strFen = "零") And strJiao <> "零" Then
    	GetDecimal = GetDecimal & "元" & strJiao & "角整"
    '如 1.01 为 壹元零壹分
    ElseIf strFen <> "" And strFen <> "零" And strJiao = "零" Then
    	GetDecimal = GetDecimal & "元" & "零" & strFen & "分"
    '如 1.11 为 壹元壹角壹分
    ElseIf strFen <> "" And strFen <> "零" And strJiao <> "零" Then
    	GetDecimal = GetDecimal & "元" & strJiao & "角" & strFen & "分"
    End If
  '有小数部分但是格式不正确
  Else
  	GetDecimal = GetDecimal & "数据格式有问题"
  End If
End Function
'数字转大写
Private Function getUpperCase(str) As String
  Dim strWord As String
  Select Case str
    Case "0": strWord = "零"
    Case "1": strWord = "壹"
    Case "2": strWord = "贰"
    Case "3": strWord = "叁"
    Case "4": strWord = "肆"
    Case "5": strWord = "伍"
    Case "6": strWord = "陆"
    Case "7": strWord = "柒"
    Case "8": strWord = "捌"
    Case "9": strWord = "玖"
    Case Else: strWord = str
  End Select
  getUpperCase = strWord
End Function

代码中也有解释,小编注解应该还算清楚,不清楚的可以和小编一起探讨。

最后把整数部分和小数部分结合起来大写一到十,使用公式:「=NUMBERSTRING(TRUNC(B5),2)&GetDecimal(B5)」即可得到最终效果。

其他相关

作者: 访客 时间:1970-01-01 阅读: 1
...
北京冬奥会闭幕式延续“简约”,将“穿越”到2008年奥运

北京冬奥会闭幕式延续“简约”,将“穿越”到2008年奥运

作者: 天天见闻 时间:2022-02-19 阅读: 3019
2022年北京冬季奥运会开幕式简约又精彩,给观众留下了深刻印象,2月20日晚,北京2022年冬奥会闭幕式也将在国家体育场“鸟巢”正式亮相。2月18日晚,整个闭幕式进行了最后一次全要素彩排冬奥会闭幕式将重现08年奥运瞬间,目前,闭幕式各项准备工作已经就绪。在日前举行的新闻发布会上,北京冬奥组委新闻发言人严家蓉介绍,北京冬奥会闭幕式依旧没有明星、没有专业演员,整体将聚焦运动员。...
a4a5尺寸

a4a5尺寸

作者: 天天见闻 时间:2022-02-26 阅读: 633
&&& A3,是指纸张的规格.按国际通用标准A3规格的纸张,其大小为297mm*420mm,是A4纸的2倍;按国家纸张开本行业标准 又叫做 "大 8 开 ".A4纸尺寸:210*297 A5纸尺寸:148*210 国家标准中图纸从小到大一般可分为A...A4纸和A5纸的尺寸哪个更大?&&& A4纸比A5纸的尺寸更大.我国纸张尺寸采用国际标准,规定以A0、A1、A2、B1、B2......等标记来表示纸张的幅面规格.A4纸尺寸:210*297mm A5纸尺寸:148*210mm 扩展资料:A4纸是210mm*297mm的由来:原因一:一张长为2,宽为X......

《传闻中的陈芊芊》大结局是悲还是喜?陈芊芊隐藏剧情让人惊呼!

作者: 天天见闻 时间:2022-02-26 阅读: 686
前一秒还在控诉着《传闻中的陈芊芊》更新速度太慢,下一秒就已经大结局了。平台这样做确实是盈利了,可是从个人角度来看传闻中的陈芊芊,还不如分等级来售卖会员。就在《传闻中的陈芊芊》已经超前点映大结局的同时,今天爱奇艺却因为“超前点映”上了热搜。与此同时,《传闻中的陈芊芊》倒是正是此时有超前点映的行为。虽然这部剧是《传闻中的陈芊芊》,可是那个原来的陈芊芊剧中不过活了前五分钟。陈芊芊隐藏剧情让人惊呼!...

金玉彬情挑半裸猛男 称《高地战》“非我莫属”

作者: 天天见闻 时间:2022-02-27 阅读: 736
金玉彬走到哪里,关注的目光就会跟到哪里,好在她从来没有因为任何因素改变自己。也许,对于金玉彬来说,这一切的一切都只是个意外,所以精彩同样出乎意料。在电影《灰姑娘》的导演朴赞旭和《女演员们》的导演李在龙的促成之下,金玉彬加盟了即将上映的大制作电影《高地战》。那种“非我莫属”的呼声再次响起,让金玉彬义无反顾。金玉彬的镜头很少,名字在片尾字幕中也排在最后,而她却说,“我很满意。”...
孩子问冬奥会和奥运会的区别是什么。应该怎么回答他?

孩子问冬奥会和奥运会的区别是什么。应该怎么回答他?

作者: 天天见闻 时间:2022-02-28 阅读: 585
我觉得有必要给孩子一个详细的解答,孩子有主动性的求知欲,站在教育层面,父母也应该在自己认知能力范围内去解答孩子的问题。况且冬奥会和奥运会有什么区别,在信息随处可得的时代,你的问题除非是大到”我来自哪里?宇宙的尽头是什么?在犹豫有无必要花一些时间来回答孩子这个问题之前,也许你应该知道,目前世界上最大的三个体育赛事是什么?奥运会,是由国际奥委会组织的综合性运动竞赛会。...
我来说两句

年度爆文