最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

在Excel中如何实现将输入的数字转换为大写的人民币

来源:动视网 责编:小OO 时间:2025-09-29 02:57:23
文档

在Excel中如何实现将输入的数字转换为大写的人民币

在Excel中如何实现将输入的数字转换为大写的人民币?作者:李登伦  发布时间:2003-11-1823:37:42 阅读次数:未知    在EXCEL97和EXCEL2000中,系统并没有提供将输入的数字直接转换为大写人民币的函数,在这里,我用编程的方式实现了这种转换。为了和系统本身提供的函数RMB()相区别(其功能是将数字转换为加¥的小写人民币格式),我这里取名为cnRMB()。大家可能会问我如何使用?好,下面我一一讲来。    首先将下面的程序代码存为一个文本文件,如“人民币大写.bas
推荐度:
导读在Excel中如何实现将输入的数字转换为大写的人民币?作者:李登伦  发布时间:2003-11-1823:37:42 阅读次数:未知    在EXCEL97和EXCEL2000中,系统并没有提供将输入的数字直接转换为大写人民币的函数,在这里,我用编程的方式实现了这种转换。为了和系统本身提供的函数RMB()相区别(其功能是将数字转换为加¥的小写人民币格式),我这里取名为cnRMB()。大家可能会问我如何使用?好,下面我一一讲来。    首先将下面的程序代码存为一个文本文件,如“人民币大写.bas

在Excel中如何实现将输入的数字转换为大写的人民币? 

作者: 李登伦    发布时间:2003-11-18 23:37:42  阅读次数:未知 

    在EXCEL97和EXCEL2000中,系统并没有提供将输入的数字直接转换为大写人民币的函数,在这里,我用编程的方式实现了这种转换。为了和系统本身提供的函数RMB()相区别(其功能是将数字转换为加¥的小写人民币格式),我这里取名为cnRMB()。大家可能会问我如何使用?好,下面我一一讲来。 

    首先将下面的程序代码存为一个文本文件,如“人民币大写.bas”,注意扩展名要用bas,然后打开EXCEL(97和2000都可以),选择“工具->宏->Visual Basic 编辑器(V)”,是不是打开了一个窗口?在打开的窗口中选择“文件->导入文件(I)...”,在对话框中选择我们上面保存的文件(“人民币大写.bas”),OK,关闭这个窗口回到EXCEL。 

    在最左上的单元格(就是A1了,你不会不知道吧?)中输入数字123,在B1单元格中输入“=cnRMB(A1)”,呵呵,看到结果了吧?就和使用系统自带的函数一样啊。好了,就这么简单,一个函数就搞定了。比用EXCEL自身提供的函数多重嵌套实现起来简单多了吧? 

    如何一劳永逸? 

    当然有办法了,把你现在的这个文件存为模板不就得了么!要注意的是在用这个模板新建文件时要“启用宏”哦。 

这段程序看起来短,可写了一天半,因为本人VB都忘得差不多了,一边查资料一边写,还真难了我好久。有不完善的地方(如只能实现最多15位数字,不能处理负值等),请大家多多指教。 

    以下为程序代码: 

Attribute VB_Name = "人民币大写" 

Rem ********************************************************************* 

Rem ** 函数名:getBitMoney() 

Rem ** 

Rem ** 功能:  转换一位数字为中文大写 

Rem ** 

Rem ** 参数:  moneyInput                  输入数字 

Rem ** 

Rem ** 功能:  返回中文大写数字 

Rem ** 

Rem ** 作者: 四川省信息通信学校 李登伦  日期: 2003/3/20 

Rem ** 

Rem *********************************************************************** 

Function getBitMoney(moneyInput) 

    Select Case moneyInput 

    Case 0 

    moneyOut = "0" 

    Case 1 

    moneyOut = "壹" 

    Case 2 

    moneyOut = "贰" 

    Case 3 

    moneyOut = "叁" 

    Case 4 

    moneyOut = "肆" 

    Case 5 

    moneyOut = "伍" 

    Case 6 

    moneyOut = "陆" 

    Case 7 

    moneyOut = "柒" 

    Case 8 

    moneyOut = "捌" 

    Case 9 

    moneyOut = "玖" 

    End Select 

    getBitMoney = moneyOut 

End Function 

Rem ********************************************************************* 

Rem ** 函数名:cnRMB() 

Rem ** 

Rem ** 参数:  money                   输入金额 

Rem ** 

Rem ** 功能:  返回中文大写金额 

Rem ** 

Rem ** 作者:  四川省信息通信学校 李登伦  日期: 2003/03/20 

Rem ** 

Rem *********************************************************************** 

Function cnRMB(money) 

    myMoney = money 

Rem    由于VB中int型数据长度为16位,EXCEL中超过15位部分会被切断为0,如输入12345670123456会被改为12345670123450。 

    If Len(myMoney) > 17 Then 

        MsgBox "你输入的数字太大了,长度不能大于15位。---【程序设计:李登伦】", , "出错啦!" 

        cnRMB = "错误:数字太大" 

        Exit Function 

    End If 

    If money <= 0 Then 

        moneyChinese = "错误:不能为负值"   

Rem负值不用进行处理 

        cnRMB = moneyChinese 

        Exit Function 

    End If 

    lenMoney = Len(money)   

Rem取得金额的位数 

    intMoney = Int(money)    

Rem用到了int()函数 

    intLen = Len(intMoney)     

Rem取得整数金额的位数 

    deciLen = lenMoney - intLen     

Rem小数位数 

    deciMoney = myMoney - intMoney     

Rem小数 

    myDeci = deciMoney 

    If deciMoney > 0 Then 

        money = intMoney 

        lenMoney = intLen 

    End If 

    leftMoney = money 

    wan = Null 

    yi = Null 

    For i = 1 To lenMoney 

        leftMoney = Left(leftMoney, lenMoney - i + 1) 

        temp = getBitMoney(Right(leftMoney, 1))   

Rem取每一位转换并插入标记 

        If i > 4 And i < 9 And temp <> "0" And IsNull(wan) Then 

         

Rem设置万位标志 

            moneyChineseTemp = "w" & moneyChineseTemp 

            wan = 1 

        End If 

        If i > 8 And temp <> "0" And IsNull(yi) Then 

         

Rem设置亿位标志 

            moneyChineseTemp = "y" & moneyChineseTemp 

            yi = 1 

        End If 

        If temp <> "0" Then 

            moneyChineseTemp = temp & i & moneyChineseTemp 

        Else 

            firstOne = Left(moneyChineseTemp, 1)  

Rem取第一个字元判断 

            If firstOne <> "0" & fistOne <> "w" & fisrtOne <> "y" And firstOne <> "" Then 

                moneyChineseTemp = temp & moneyChineseTemp 

            End If 

        End If 

    Next 

     

Rem按位置替换以上设置的标志 

    moneyChineseTemp = Replace(moneyChineseTemp, "16", "仟") 

    moneyChineseTemp = Replace(moneyChineseTemp, "15", "佰") 

    moneyChineseTemp = Replace(moneyChineseTemp, "14", "拾") 

    moneyChineseTemp = Replace(moneyChineseTemp, "13", "万") 

    moneyChineseTemp = Replace(moneyChineseTemp, "12", "仟") 

    moneyChineseTemp = Replace(moneyChineseTemp, "11", "佰") 

    moneyChineseTemp = Replace(moneyChineseTemp, "10", "拾") 

    moneyChineseTemp = Replace(moneyChineseTemp, "9", "") 

    moneyChineseTemp = Replace(moneyChineseTemp, "8", "仟") 

    moneyChineseTemp = Replace(moneyChineseTemp, "7", "佰") 

    moneyChineseTemp = Replace(moneyChineseTemp, "6", "拾") 

    moneyChineseTemp = Replace(moneyChineseTemp, "5", "") 

    moneyChineseTemp = Replace(moneyChineseTemp, "4", "仟") 

    moneyChineseTemp = Replace(moneyChineseTemp, "3", "佰") 

    moneyChineseTemp = Replace(moneyChineseTemp, "2", "拾") 

    moneyChineseTemp = Replace(moneyChineseTemp, "1", "") 

    moneyChineseTemp = Replace(moneyChineseTemp, "0", "零") 

    moneyChineseTemp = Replace(moneyChineseTemp, "w", "万") 

    moneyChineseTemp = Replace(moneyChineseTemp, "y", "亿") 

    moneyChinese = moneyChineseTemp & "元" 

     

Rem处理小数部分,四舍五入。 

    If deciMoney > 0 Then 

        deciMoney = Round(deciMoney, 5) & "00" 

        deciM = Right(deciMoney, Len(deciMoney) - 1) 

        deciMoney1 = Left(deciM, 3) 

        carry = Val(Right(deciMoney1, 1))  

Rem进位 

        If carry >= 5 Then 

            deciMoney1 = Left(deciMoney1, 2) + 1 & "0" 

        End If 

        deciMoney = FormatNumber(deciMoney1 / 10) / 100 

        t1 = Right(deciMoney, Len(deciMoney) - 1) 

        t2 = Right(deciMoney, Len(deciMoney) - 2) 

        firstDec = Left(t1, 1)     

Rem第一位小数 

        secondDec = Left(t2, 1)    

Rem第二位小数 

        If firstDec = 0 Then 

             dec1 = "零" 

        Else 

             dec1 = getBitMoney(firstDec) & "角" 

        End If 

        If secondDec = 0 Or secondDec = "" Then 

            dec2 = "" 

        Else 

            dec2 = getBitMoney(secondDec) & "分" 

        End If 

        dec = dec1 & dec2 

        If dec1 = "零" And (dec2 = "0" Or dec2 = "") Then 

            dec = "" 

        End If 

    End If 

    If deciMoney = 0 Then 

        moneyChinese = moneyChinese & "正" 

    Else 

        moneyChinese = moneyChinese & dec & "正" 

    End If 

    If myMoney < 1 Then 

        moneyChinese = dec 

    End If 

     

Rem去掉多余的"零" 

    lMoney = moneyChinese 

    For i = 1 To Len(moneyChinese) 

        moneyChinese = Replace(moneyChinese, "零零", "零") 

    Next 

    cnRMB = moneyChinese 

End Function 

通信地址:四川省信息通信学校实验室 李登伦  

邮编:618000 QQ:1049707 

电子邮件: ldl@scxt.net 

文档

在Excel中如何实现将输入的数字转换为大写的人民币

在Excel中如何实现将输入的数字转换为大写的人民币?作者:李登伦  发布时间:2003-11-1823:37:42 阅读次数:未知    在EXCEL97和EXCEL2000中,系统并没有提供将输入的数字直接转换为大写人民币的函数,在这里,我用编程的方式实现了这种转换。为了和系统本身提供的函数RMB()相区别(其功能是将数字转换为加¥的小写人民币格式),我这里取名为cnRMB()。大家可能会问我如何使用?好,下面我一一讲来。    首先将下面的程序代码存为一个文本文件,如“人民币大写.bas
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top