ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 3624|回复: 2

Public Function NumberToChinese(阿拉伯數字轉中文數字)(5個引數)

[复制链接]

TA的精华主题

TA的得分主题

发表于 2009-7-26 22:06 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
Option Explicit
Option Base 1

Public Function NumberToChinese(阿拉伯數字 As String, 中文大寫 As Boolean, 中阿混寫 As Boolean, 補零 As Boolean, 貨幣 As Boolean, Optional 貨幣符號 As String) As String

    Application.Volatile
   
    Dim 中文數字陣列 As Variant
    Dim 中文大寫數字陣列 As Variant
    Dim 數字小單位陣列 As Variant
    Dim 大寫數字小單位陣列 As Variant
    Dim 數字大單位陣列 As Variant
    Dim 小數單位陣列 As Variant
    Dim K As Long
    Dim N As Long
    Dim SMALL1 As String
    Dim SMALL2 As String
    Dim TEMP1 As String
    Dim TEMP2 As String
    Dim TEMP3 As String
    Dim 正整數 As String
    Dim 小數 As String
    Dim 組數 As Long
    Dim 零值 As String
    Dim 補零值 As Long
    Dim 組補零值 As Long
   
    On Error GoTo line

    中文數字陣列 = Array("○", "一", "二", "三", "四", "五", "六", "七", "八", "九")
    中文大寫數字陣列 = Array("零", "壹", "貳", "參", "肆", "伍", "陸", "柒", "捌", "玖")
    數字小單位陣列 = Array("", "十", "百", "千")
    大寫數字小單位陣列 = Array("", "拾", "佰", "仟")
    數字大單位陣列 = Array("", "萬", "億", "兆", "京", "垓")
    小數單位陣列 = Array("分", "角")
   
    If 中文大寫 = True Then
        零值 = "零"
    Else
        零值 = "○"
    End If
   
    小數 = Fix(阿拉伯數字)
   
    If 小數 = 0 And 阿拉伯數字 < 0 Then
        小數 = Len(小數) + 1
    Else
        小數 = Len(小數)
    End If
   
    If Len(阿拉伯數字) = 小數 Then
        If 貨幣 = True Then
            NumberToChinese = IIf(中文大寫 = True, "圓整", "元整")
        End If
        
        GoTo line1
    End If
   
    小數 = Mid(阿拉伯數字, 小數 + 2, Len(阿拉伯數字) - 小數 - 1)

    If 中阿混寫 = True Then
        If 貨幣 = True Then
            NumberToChinese = IIf(中文大寫 = True, "圓", "元") & 小數
        Else
            NumberToChinese = "點" & 小數
        End If
    Else
        If 貨幣 = True Then
            If Len(小數) > 1 Then
                小數 = Mid(小數, 1, 2)
            Else
                小數 = 小數 * 10
            End If
            
            SMALL2 = ""
            補零值 = 0
            For N = 1 To Len(小數)
                If Mid(小數, Len(小數) - N + 1, 1) = 0 Then
                    If N = 1 Then
                        補零值 = 補零值 + 1
                        SMALL1 = ""
                    Else

[ 本帖最后由 linyancheng 于 2009-8-19 14:22 编辑 ]

Public Function NumberToChinese.zip

1.37 KB, 下载次数: 23

TA的精华主题

TA的得分主题

发表于 2009-7-26 23:05 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-8-19 14:25 | 显示全部楼层
這個函數無法計算一千兆以上的數字,是Excel的限制嗎?
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-12-26 03:51 , Processed in 0.033052 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表