在Excel表格中数字转金额
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
在Excel表格中,怎样将带小数点的小写数字转换成中文大写?
比如说在表格中输入12.326然后转换成中文大写"壹拾贰点叁贰陆.
补充 - 3个月前
在同一单元格中,再次输入不同的数字,中文大写也跟着变化
补充 - 3个月前
特别说明,此单元格的数字不是金额,只是普通带小数点的数字,小数点后有一至四位小数.
最佳答案 - 由投票者2个月前选出
问题:在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数字的语句。请凉解。
五、上面的公式和程序代码只解决特定问题的,不要直接用于人民币大小写的转换。
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*1
0)*10,"[DBNum2][$-804]G/通用格式")&"分")
便会出现壹拾贰元叁角贰分
注意: 此公式会将小数后第三个位舍去, 如公式要求四舍五入进位, 公式内所有 A1 要改成ROUND(A1,2), 公式便要长很多
在Excel中将小写数字转化为中文大写元角分数字
=IF(B1-INT(B1)=0,TEXT(INT(B1),"[DBNum2][$-804]G/通用格式")&"元整",IF(B1*100-INT(B1*10)*10=0,TEXT(INT(B1),"[DBNum2][$-804]G/通用格式")&"元"&TEXT(INT(B1*10)-INT(B1)*10,"[DBNum2][$-804]G/通用格式")&"角整",IF(INT(B1*10)-INT(B1)*10=0,TEXT(INT(B1),"[DBNum2][$-804]G/通用格式")&"元零"&TEXT(INT(B1*100)-INT(B1*10)*10,"[DBNum2][$-804]G/通用格式")&"分
",TEXT(INT(B1),"[DBNum2][$-804]G/通用格式")&"元
"&TEXT(INT(B1*10)-INT(B1)*10,"[DBNum2][$-804]G/通用格式")&"角"&TEXT(INT(B1*100)-INT(B1*10)*10,"[DBNum2][$-804]G/通用格式")&"分")))
以上是代码直接复制粘贴到你要生成元角分的单元格里然后在 B1单元格里直接输入数字。你就能看到目标单元格里生成的元角分。
对财会非常有用的自动生成元角分。
具体例子
1.在B1格输入小写100目标单元格变大写壹佰元整
2.在B1格输入小写100.10目标单元格变大写壹佰元一角整
3.在B1格输入小写100.01目标单元格变大写壹佰元零一分