请教一个问题EXCEL电子表格问题:我怎么样才能把小写金额(如7140.82)在另一个单元格里自动调成大写的(如:柒仟壹佰肆拾圆捌角贰分)
如果小写金额在A1单元格,在需要大写的单元格内输入=IF(A1<=0,,TEXT(INT(A1),"[dbnum2]G/通用格式")&"圆"&IF(INT(A1*10)-INT(A1)*10=0,IF(INT(A1)*(INT(A1*100)-INT(A1*10)*10)=0,"","零"),TEXT(INT(A1*10)-INT(A1)*10,"[dbnum2]")&"角")&IF((INT(A1*100)-INT(A1*10)*10)=0,"整",TEXT((INT(A1*100)-INT(A1*10)*10),"[dbnum2]")&"分"))
这个方法比较简单,如果单元格更改,只需把公式中的A1全都改为小写金额所在单元格就行
另外,大写“圆”可以写为“元”
这个方法比较简单,如果单元格更改,只需把公式中的A1全都改为小写金额所在单元格就行
另外,大写“圆”可以写为“元”
温馨提示:答案为网友推荐,仅供参考
第1个回答 2010-09-10
有几种方法都能实现你的要求。
其中一种是这样:=IF(B1<0,"金额为负无效",
(IF(OR(B1=0,B1=""),"(人民币)零元",
IF(B1<1,"(人民币)",
TEXT(INT(B1),"[dbnum2](人民币)G/通用格式")&"元"))))&
IF(
(INT(B1*10)-INT(B1)*10)=0,
IF(INT(B1*100)-INT(B1*10)*10=0,"","零"),
(TEXT(INT(B1*10)-INT(B1)*10,"[dbnum2]")&"角"))
&IF(
(INT(B1*100)-INT(B1*10)*10)=0,
"整",
TEXT((INT(B1*100)-INT(B1*10)*10),"[dbnum2]")&"分")
如果还有不明白的,直接HI我,就可以。
其中一种是这样:=IF(B1<0,"金额为负无效",
(IF(OR(B1=0,B1=""),"(人民币)零元",
IF(B1<1,"(人民币)",
TEXT(INT(B1),"[dbnum2](人民币)G/通用格式")&"元"))))&
IF(
(INT(B1*10)-INT(B1)*10)=0,
IF(INT(B1*100)-INT(B1*10)*10=0,"","零"),
(TEXT(INT(B1*10)-INT(B1)*10,"[dbnum2]")&"角"))
&IF(
(INT(B1*100)-INT(B1*10)*10)=0,
"整",
TEXT((INT(B1*100)-INT(B1*10)*10),"[dbnum2]")&"分")
如果还有不明白的,直接HI我,就可以。
第2个回答 2010-09-10
推荐一个网友的答案:
Function da(M)
y = Int(Round(100 * Abs(M)) / 100)
j = Round(100 * Abs(M) + 0.00001) - y * 100
f = (j / 10 - Int(j / 10)) * 10
A = IIf(y < 1, "", Application.Text(y, "[DBNum2]") & "元")
b = IIf(j > 9.5, Application.Text(Int(j / 10), "[DBNum2]") & "角", IIf(y < 1, "", IIf(f > 1, "零", "")))
c = IIf(f < 1, "整", Application.Text(Round(f, 0), "[DBNum2]") & "分")
da = IIf(Abs(M) < 0.005, "", IIf(M < 0, "负" & A & b & c, A & b & c))
End Function
此程序为自定义函数程序,与普通的excel内嵌函数用法一样。
按alt加F11打开vba编辑器,新建模块,粘贴上面的代码,保存退出。
例 a1 为1000的话要在a2得到大写 在a2输入=da(a1)即等于壹仟圆整。
Function da(M)
y = Int(Round(100 * Abs(M)) / 100)
j = Round(100 * Abs(M) + 0.00001) - y * 100
f = (j / 10 - Int(j / 10)) * 10
A = IIf(y < 1, "", Application.Text(y, "[DBNum2]") & "元")
b = IIf(j > 9.5, Application.Text(Int(j / 10), "[DBNum2]") & "角", IIf(y < 1, "", IIf(f > 1, "零", "")))
c = IIf(f < 1, "整", Application.Text(Round(f, 0), "[DBNum2]") & "分")
da = IIf(Abs(M) < 0.005, "", IIf(M < 0, "负" & A & b & c, A & b & c))
End Function
此程序为自定义函数程序,与普通的excel内嵌函数用法一样。
按alt加F11打开vba编辑器,新建模块,粘贴上面的代码,保存退出。
例 a1 为1000的话要在a2得到大写 在a2输入=da(a1)即等于壹仟圆整。
第3个回答 2010-09-10
呵呵 给你一个公式看看:
=IF(ROUND(E13,2)<0,"无效数值",IF(ROUND(E13,2)=0,"零",IF(ROUND(E13,2)<1,"",TEXT(INT(ROUND(E13,2)),"[dbnum2]")&"元")&IF(INT(ROUND(E13,2)*10)-INT(ROUND(E13,2))*10=0,IF(INT(ROUND(E13,2))*(INT(ROUND(E13,2)*100)-INT(ROUND(E13,2)*10)*10)=0,"","零"),TEXT(INT(ROUND(E13,2)*10)-INT(ROUND(E13,2))*10,"[dbnum2]")&"角")&IF((INT(ROUND(E13,2)*100)-INT(ROUND(E13,2)*10)*10)=0,"整",TEXT((INT(ROUND(E13,2)*100)-INT(ROUND(E13,2)*10)*10),"[dbnum2]")&"分")))
如果你登录 club.excelhome.net 搜索一下,将发现不下10中公式
=IF(ROUND(E13,2)<0,"无效数值",IF(ROUND(E13,2)=0,"零",IF(ROUND(E13,2)<1,"",TEXT(INT(ROUND(E13,2)),"[dbnum2]")&"元")&IF(INT(ROUND(E13,2)*10)-INT(ROUND(E13,2))*10=0,IF(INT(ROUND(E13,2))*(INT(ROUND(E13,2)*100)-INT(ROUND(E13,2)*10)*10)=0,"","零"),TEXT(INT(ROUND(E13,2)*10)-INT(ROUND(E13,2))*10,"[dbnum2]")&"角")&IF((INT(ROUND(E13,2)*100)-INT(ROUND(E13,2)*10)*10)=0,"整",TEXT((INT(ROUND(E13,2)*100)-INT(ROUND(E13,2)*10)*10),"[dbnum2]")&"分")))
如果你登录 club.excelhome.net 搜索一下,将发现不下10中公式
第4个回答 2010-09-10
可以将输出列的格式设为"特殊"-"中文大写数字"
但是不是货币类型的
不过可以通过vba解决
但是不是货币类型的
不过可以通过vba解决
第5个回答 2010-09-10
在格式菜单下的单元格选项中,把格式换为文本格式就可以了。
Excel里常有这种问题,因为默认的是数值输入模式,0的位置不对的话就经常会被忽略掉。改为文本模式后,数值都当做文本来处理,就不会有这种问题了。
Excel里常有这种问题,因为默认的是数值输入模式,0的位置不对的话就经常会被忽略掉。改为文本模式后,数值都当做文本来处理,就不会有这种问题了。