在Excel中实现人民币大写显示的方法

Author: 李激扬、徐卫多、张唏 Date: 1999年 第43期 34版


#1Excel 97内置函数法
#1方法1:
  在Excel97中有这样一个功能,利用单元格格式中的设置可以将一个小写的阿拉伯数值转换成一个大写中文数值,但不能按财务金额的格式显示。其实,对于一个金额来讲,如5.34元(五元三角四分),可将5.34中的5、3、4分别分离,然后在每个数值中间加入元、角、分,最后将数值用大写中文数值表示即可。
  如^433401a^所示,具体操作步骤如下:
  (1)在单元格A3中输入所需转换的金额,也可以从其他表单读入。
  (2)在单元格C3、E3、G3中分别填入元、角、分。
  (3)在单元格B3中输入 =INT(A3)。
  (4)在单元格D3中输入 =INT((A3-INT(A3))*10)。
  (5)在单元格F3中输入 =INT((A3*10-INT(A3*10)+0.0001)*10)。
  注:在这里由于Excel的计算误差,一定要加上0.0001这个修正值,不然就得不到正确结果。
  (6)按住CTRL键,左键点击B3、D3、F3单元格,在格式下拉菜单中选择“单元格”格式,在“数字”标签中“分类”项中选择“特殊”,在右栏“类型”中选择“中文大写数字”。确定后退出。
  (7)将B列宽度拉长,以便显示较大数值,将C列至G列的宽度缩小至一个中文字符的宽度。
  通过上述步骤后,可进行填充边框线操作,对于大量数值的处理可通过拖曳表格A3:G3来解决,也可将B3:G3单元格复制到某个所需单元格中去。(江苏 李激扬)
#1方法2:
  步骤如下:
  (1)在“金额”后面增加3列并设定表格(见^433401b^)。
  (2)在单元格B2中输入=INT(A2),设置A2的格式,选“格式”→“单元格”→“数字”,在“分类”下选“自定义”,在“类型”下输入([DBNum2]G/通用格式“元”)(圆括号中的内容)。
  (3)在单元C2中输入=INT((A2-B2)*10),同(2)在“类型”下输入([DBNum2]G/通用格式“角”)。
  (4)在单元格D2中输入=ROUND((A2-B2-C2*0.1)*100,0),同(3)在“类型”下输入([DNBum2]G/通用格式“分”)。
  (5)将B2至D2向下复制到最后一行。
  (6)在单元格A13中输入=SUM(A2:A12)。最后结果如附表所示。(四川 徐卫多)
#1VBA编程法
  选择菜单下的“工具”下的“宏”,给这个宏起个名字叫“转换大写数字”,然后编辑这个宏,源程序如下:
  Sub 转换大写数字()
      Dim i, j As Integer
      Dim row, col As Integer
      row = Selection.Rows.Count   ‘获取所选区域的行数
      col = Selection.Columns.Count ‘获取所选区域的列数
      For i = 1 To row
         For j = 1 To col
             Selection.Cells(i, j).Value =转换(Selection.Cells(i, j).Value)  ‘完成转换
         Next j
      Next i
  End Sub

  Function 转换(digit As Currency) As String
      If IsMissing(digit) Then
         Exit Function
      Else
         Dim s, ip, dp As String
         Dim ss1, s2, s3, s4 As String
         Dim i, n As Integer
         ss1 = ″仟佰拾亿仟佰拾万仟佰拾″
         s = ″″
         ip = Str(Int(digit))    ‘分离整数部分
         dp = Right(Str(digit * 100), 2)  ‘分离小数部分
         i = 2
         s2 = ″″
         s3 = ″″
         n = Len(ip) - 2
         s4 = Right(Trim(ss1), n)
         n = 1
         Do While i <= Len(ip)
            s2 = 对应数值(Val(Mid(ip, i, 1)))
            s3 = Mid(s4, n, 1)
            s = s + s2 + s3
            i = i + 1
            n = n + 1
         Loop
         s = s + ″元″ + 对应数值(Mid(dp, 1, 1)) + ″角″ +
  对应数值(Right(dp, 1)) + ″分″
         转换 = s
      End If
  End Function
  Function 对应数值(num As Integer) As String
      Dim ss2 As String
      ss2 =″零壹贰叁肆伍陆柒捌玖″
      对应数值 = Mid(ss2, num + 1, 1)
  End Function
  使用方法就是选一个要转换的区域,然后再选菜单“工具”下的“宏”执行这个宏就行了。