分享

Excel表格中将小数点的小写数字转换成中文大写?

 甘苦人生2010 2012-08-30
比如说在表格中输入12.326然后转换成中文大写"壹拾贰点叁贰陆.回答列表在同一单元格中,再次输入不同的数字,中文大写也跟着变化。
  • 特别说明,此单元格的数字不是金额,只是普通带小数点的数字,小数点后有一至四位小数.
  • 晕,没见过。
  • 问题:在Excel表格中,怎样将带小数点的小写数字转换成中文大写?
    比如说在表格中输入12.326然后转换成中文大写"壹拾贰点叁贰陆.
    在同一单元格中,再次输入不同的数字,中文大写也跟着变

    一、在输入的当前单元格直接转换,没有现成的格式函数。但通过VBA代码还是能够实现的。(VBA代码我在后面讲)
    如果想简单一点的话,通过相玲单元格转换大写还是方便一点。
    如果在 A1 输入小写,就在 B1 输入如下公式:
    =IF(A1>0,SUBSTITUTE((TEXT(A1,"[DBnum2]")),".","点"),IF(A1<0,"负"&SUBSTITUTE((TEXT(ABS(A1),"[DBnum2]")),".","点"),""))
    上面的公式中考虑了输入负数和零的问题,如不考虑负数和零,公式可以简化如下:
  • =IF(A1>0,SUBSTITUTE((TEXT(A1,"[DBnum2]")),".","点"),"")

    二、如果你坚持要在输入数据的单元格中直接转换中文大写,只好用VBA程序代码了,只是比较烦。
    代码如下:
    Private Sub Worksheet_Change(ByVal aa As Range)
    On Error GoTo error
    If aa.Column = 1 Then
    Select Case aa
    Case Is > 0
    aa = Replace(Application.Text(aa, "[DBnum2]"), ".", "点")
    Case Is < 0
    aa = "负" & Replace(Application.Text(Abs(aa), "[DBnum2]"), ".", "点")
    Case Is = 0
    aa = ""
    End Select
    End If
    error: Exit Sub
    End Sub

    说明:
    1。我说的代码实际上是用Execl自带的VBA编程语言编制的一个小程序。这个程序在你打开工作表的时候已在后台准备运行,当工作表中某个单元格内容发生变化时马上运行。在程序运行中程序会自动判别,还在第一列的单元格中输入的小写数字都转换成中文大写,在其他单元格中输入的数字不转换大写。程序是在后台运行的,在工作表窗口是看不见的,只能看见程序运行后的结果。在工作表的单元格中不能设置这些程序代码。程序代码只能在VBA编码窗口中编制。打开VBA编程窗口的方法有好几种,这里只说一种。在已打开的工作表中,右击您要转换中文大写的工作表标签,在弹出的菜单中选择查看代码,这时VBA编码窗口已打开。把上面的代码输入到代码窗口中。当然可以用复制的方法把代码复制过去,这样不容易错。最后关闭代码窗口,自动回到工作表窗口。这时你在A1中输入数字试试看,是否得到中文大写的效果。

    2。在上面程序代码中, 已设置为在工作表的第一列任何单元格中输入小写的数字都会马上转换成大写。其它单元格中输入的数据不会转换。如想在其它列的单元格中转换数据,请修改第三行代码------Column = 1---- 中的数字。数字1代表第一列,数字2代表第二列,依次类推。

    3。如果不考虑负数、零等情况的话,代码可以简化如下:
    Private Sub Worksheet_Change(ByVal aa As Range)
    If aa.Column = 1 Then
    aa = Replace(Application.Text(aa, "[DBnum2]"), ".", "点")
    End If
    End Sub
    采用简化代码的情况下,输入的数字必须 >0 ,如果输入 <=0 的数字会有意想不到结果。因为代码中没有处理0和<0数字的语句。请凉解。

    五、上面的公式和程序代码只解决特定问题的,不要直接用于人民币大小写的转换。

    请多提意见!
  • 问题己解决
  • 你用替换功能呀。这个适合大批量的转换。
  • 没有这样的功能吧.
  • 这很容易呀,在Excel中就有这样的转换。选择要转换的数据,或者先在单元格中进行设置,右键/设置单元格格式,选择数字选项卡,选择左边的分类为特殊,然后选择右边的类型为中文大写数字,确定即可。
  • 如此设置小数点的"."不能转换成"点".
  • 在maya123215的回答的基础上,再“查找-替换”嘛,把“.”换成“点”。
  • maya123215老师用的方法: 右键->设置单元格格式->数字->特殊->数字中文大写
    是最简单及常用的方法
    由于单元格的内容仍然是数字 12.326, 并非文本格式“壹拾贰点叁贰陆”, 故miaowu老师提议用“查找-替换”嘛,把“.”换成“点”是不可行的
    故我提议用以下的公式:
    假设A1是 12.326
    在任何一格输入公式:
    =SUBSTITUTE(TEXT($A$1,"[DBNum2][$-804]G/通用格式"),".","点")
    便会出现 壹拾贰点叁贰陆
    由于中文大写主要是作金额, 单位是 元/角/分
    公式变成:
    =TEXT(INT(A1),"[DBNum2][$-804]G/通用格式")&"元"&IF((INT(A1*10)-INT(A1)*10)=0,"",TEXT(INT(A1*10)-INT(A1)*10,"[DBNum2][$-804]G/通用格式")&"角")&IF(INT(A1*100)-INT(A1*10)*10=0,"",TEXT(INT(A1*100)-INT(A1*10)*10,"[DBNum2][$-804]G/通用格式")&"分")
    便会出现 壹拾贰元叁角贰分
    注意: 此公式会将小数后第三个位舍去, 如公式要求四舍五入进位, 公式内所有 A1 要改成ROUND(A1,2), 公式便要长很多
  • 呵呵,很好用,但有一个问题,假如小数点后面出现零,就不正确了,如6968.05,就变成了:陆仟玖佰陆拾捌元伍分,但实际需要的是:陆仟玖佰陆拾捌元零伍分,如何实现。
  • 再就是后面是零角零分的情况如何实现。
  • 还有要在本单元格转换如何实现,也就是说转换后的大写金额显示在小写数字所在的单元格。
  • 刚看到你的意见
    公式显示是可以解决 “零角伍分” 或 “零伍分”的问题, 但公式较长
    在单元格设置自定义格式祇可做固定位数, 如 1.25 变成 壹元贰角伍分
    如 21.25 便不成了
  • 如需我进一步跟进, 请留下e-mail, 并说明有否VBA知识, 我可传档案给你
  • 如认为我的答案可行, 请投我一票, 谢谢!
  • 呵呵各位!有什么好的方法给我发邮件sunshinejpv@yahoo.com
  •  

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

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多