金额大写规则(Excel中金额小写转大写)

 2025-08-29 14:42:02  阅读 142  评论 0

摘要:对于做财务的同学应该经常会遇到要求把金额用大写的方式展示吧,如下图这样。今天小编就和大家分享如何把数字金额转换为大写金额。1、单元格格式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中金额小写转大写,职场小技能,值得学习

同理「=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)」即可得到最终效果。

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

版权声明:我们致力于保护作者版权,注重分享,被刊用文章【金额大写规则(Excel中金额小写转大写)】因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!;

原文链接:https://www.yxiso.com/zhishi/2114574.html

发表评论:

关于我们
院校搜的目标不仅是为用户提供数据和信息,更是成为每一位学子梦想实现的桥梁。我们相信,通过准确的信息与专业的指导,每一位学子都能找到属于自己的教育之路,迈向成功的未来。助力每一个梦想,实现更美好的未来!
联系方式
电话:
地址:广东省中山市
Email:beimuxi@protonmail.com

Copyright © 2022 院校搜 Inc. 保留所有权利。 Powered by BEIMUCMS 3.0.3

页面耗时0.0364秒, 内存占用1.93 MB, 访问数据库24次

陕ICP备14005772号-15