Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

[5分]求教:如何把阿拉伯数字转中文的函数(如:10转十)

hjs  发表于:2011-07-05 01:36:00  
复制

求教:如何把阿拉伯数字转中文的函数(如:10转十,200转二百,5转五,等)

 

焦急等待!

 

Top
fcy6571 发表于:2011-07-05 09:17:49

是转换成货币吧



麥田 发表于:2011-07-05 12:51:21

金额分栏显示及金额大写

http://www.accessoft.com/article-show.asp?id=2582

 

是转换为大写方式  你说的那种不是大写



红尘如烟 发表于:2011-07-05 15:15:13

'===============================================================================================
'-函数名称:         CnNumber
'-功能描述:         将阿拉伯数字转换成中文数字
'-输入参数:         Number   要转换的数字
'-返回参数:         返回转换后得到的中文数字
'-使用示例:         =CnNumber(481000001.02)  '返回值:四亿八千一百万〇一点〇二
'-相关调用:
'-使用注意:
'-兼 容 性:         最大上限为一亿的3次方,超出此限会出错
'-参考资料:
'-作    者:         红尘如烟
'-创建日期;         2011-7-5
'===============================================================================================
Public Function CnNumber(Number As Variant) As String
    Dim strDecimal As String
    Dim strInteger As String
    Dim lngPos As Long
    Dim strNumber As Variant
    Dim varNum As String
    Dim strCarry As String
    Dim lngI As Long
   
    strNumber = CStr(CDec(Number))
    lngPos = InStr(1, strNumber, ".")
    If lngPos > 0 Then
        strDecimal = Mid(strNumber, lngPos + 1)
        For lngI = 1 To Len(strDecimal)
            varNum = Mid(strDecimal, lngI, 1)
            If varNum = 0 Then varNum = 10
            Mid(strDecimal, lngI, 1) = Mid("一二三四五六七八九〇", varNum, 1)
        Next
        strDecimal = "点" & strDecimal
        strInteger = StrReverse(Left(strNumber, lngPos - 1))
    Else
        strInteger = StrReverse(strNumber)
    End If
   
    If Number = 0 Then
        CnNumber = "〇"
    Else
        strCarry = "  十 百 千 万 十 百 千 亿 十 百 千 万 十 百 千 亿 十 百 千 万 十 百 千 亿"
        strInteger = Replace(strInteger, "-", "")
        For lngI = 1 To Len(strInteger)
            varNum = Mid(strInteger, lngI, 1)
            If varNum = 0 Then varNum = 10
            Mid(strCarry, lngI * 2, 1) = Mid$("一二三四五六七八九〇", varNum, 1)
        Next
        strCarry = Trim(strCarry)
        strInteger = StrReverse(strCarry)
        strInteger = Mid$(strInteger, InStrRev(strInteger, " ") + 2)
        strInteger = Replace(strInteger, "〇十", "〇")
        strInteger = Replace(strInteger, "〇百", "〇")
        strInteger = Replace(strInteger, "〇千", "〇")
        Do Until Not strInteger Like "*〇〇*"
            strInteger = Replace(strInteger, "〇〇", "〇")
        Loop
        strInteger = Replace(strInteger, "十〇", "十")
        strInteger = Replace(strInteger, "〇万", "万")
        strInteger = Replace(strInteger, "〇亿", "亿")
       
        If Number < 0 Then strInteger = "负" & strInteger
        CnNumber = strInteger & strDecimal
    End If
End Function

 



麥田 发表于:2011-07-05 21:10:19
好函数  学习了

麥田 发表于:2011-07-06 00:21:03

Access源码示例】金额小写转中文大写数字\转中文大写金额的示例

http://www.accessoft.com/article-show.asp?id=5611



殷小宝 发表于:2011-07-06 09:01:59
红尘如烟大师,太厉害了.我等是永远追不上的.

麥田 发表于:2011-07-06 21:47:55
追上了你会有独孤求败感觉  还是有个榜样目标给你追赶比较好

hjs 发表于:2011-07-12 22:58:30


hjs 发表于:2011-07-12 22:58:58


总记录:9篇  页次:1/1 9 1 :