分享

Excel金额大写经典函数及自定义函数

 新华书店好书榜 2016-07-31

 金额大写经典公式:

1.=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(TEXT(A1,'[dbnum2]0拾万0万0千0百0拾0元0角0分'),'零拾万',''),'零万',''),'零千',''),'零百',''),'零拾',''),'零元',''),'零角',''),'零分','')

2.=IF(H6='','',IF(H6<0,'负','')&TEXT(TRUNC(ABS(ROUND(H6,2))),'[DBNum2]')&'元'&IF(ISERR(FIND('.',ROUND(H6,2))),'',TEXT(RIGHT(TRUNC(ROUND(H6,2)*10)),'[DBNum2]'))&IF(ISERR(FIND('.0',TEXT(H6,'0.00'))),'角','')&IF(LEFT(RIGHT(ROUND(H6,2),3))='.',TEXT(RIGHT(ROUND(H6,2)),'[DBNum2]')&'分','整'))

3.=IFERROR(IF(A1*1,SUBSTITUTE(IF(-RMB(A1*1,2),TEXT(A1*1,';负')&TEXT(INT(ABS(A1*1)+0.5%),'[dbnum2]G/通用格式元;;')&TEXT(RIGHT(RMB(A1*1,2),2),'[>9][dbnum2]0角0分;'&IF(A1^2<1,,0)&'[>][dbnum2]0分;整'),),'零分','整'),''),'非数字')

4.=IF(D43<0,'负',)&IF(D43,SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(TEXT(INT(ABS(D43)),'[dbnum2]G/通用格式元零;;')&IF(INT(ABS(D43))=ABS(D43),'整',TEXT(RIGHT(TEXT(ABS(D43),'.00'),2),'[dbnum2]0角0分')),'零角',''),'零分','整'),'零整','整'),'')


自定义函数

Function 大写金额(ByVal n) As String 'n as Currency

    Const cNum As String = '零壹贰叁肆伍陆柒捌玖-万仟佰拾亿仟佰拾万仟佰拾元角分'

    Const cCha As String = '零仟零佰零拾零零零零零亿零万零元亿万零角零分零整-零零零零零亿万元亿零整整'

    Dim sNum As String

    Dim i As Long

    

    If (n <> 0) And (Abs(n) < 10000000000000#) Then

        sNum = Trim(Str(Int(Abs(n) * 100)))

        For i = 1 To Len(sNum) '逐位转换

            大写金额 = 大写金额 + Mid(cNum, (Mid(sNum, i, 1)) + 1, 1) + Mid(cNum, 26 - Len(sNum) + i, 1)

        Next

        For i = 0 To 11 '去掉多余的零

            大写金额 = Replace(大写金额, Mid(cCha, i * 2 + 1, 2), Mid(cCha, i + 26, 1))

        Next

        If n < 0 Then 大写金额 = '(负)' + 大写金额

    Else

        大写金额 = IIf(n = 0, '零元整', '溢出')

    End If

End Function


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多