|
当使用错误的参数或运算对象类型时,或者当公式自动更正功能不能更正公式时,将产生错误值#VALUE!。
原因一:在需要数字或逻辑值时输入了文本,Excel不能将文本转换为正确的数据类型。
解决方法:确认公式或函数所需的运算符或参数正确,并且公式引用的单元格中包含有效的数值。例如:如果单元格A1包含一个数字,单元格A2包含文本"学籍",则公式"=A1 A2"将返回错误值#VALUE!。可以用SUM工作表函数将这两个值相加(SUM函数忽略文本):=SUM(A1:A2)。
原因二:将单元格引用、公式或函数作为数组常量输入。
解决方法:确认数组常量不是单元格引用、公式或函数。
原因三:赋予需要单一数值的运算符或函数一个数值区域。
解决方法:将数值区域改为单一数值。修改数值区域,使其包含公式所在的数据行或列。
(3)#DIV/O!
当公式被零除时,将会产生错误值#DIV/O!。
原因一:在公式中,除数使用了指向空单元格或包含零值单元格的单元格引用(在Excel中如果运算对象是空白单元格,Excel将此空值当作零值)。
解决方法:修改单元格引用,或者在用作除数的单元格中输入不为零的值。
原因二:输入的公式中包含明显的除数零,例如:=5/0。
解决方法:将零改为非零值。
(4)#NAME?
在公式中使用了Excel不能识别的文本时将产生错误值#NAME?。
原因一:删除了公式中使用的名称,或者使用了不存在的名称。
解决方法:确认使用的名称确实存在。选择菜单"插入"|"名称"|"定义"命令,如果所需名称没有被列出,请使用"定义"命令添加相应的名称。
原因二:名称的拼写错误。
解决方法:修改拼写错误的名称。
原因三:在公式中使用标志。
解决方法:选择菜单中"工具"|"选项"命令,打开"选项"对话框,然后单击"重新计算"标签,在"工作薄选项"下,选中"接受公式标志"复选框。
原因四:在公式中输入文本时没有使用双引号。
解决方法:Excel将其解释为名称,而不理会用户准备将其用作文本的想法,将公式中的文本括在双引号中。例如:下面的公式将一段文本"总计:"和单元格B50中的数值合并在一起:="总计:"&B50
原因五:在区域的引用中缺少冒号。
解决方法:确认公式中,使用的所有区域引用都使用冒号。例如:SUM(A2:B34)。
(5)#N/A
原因:当在函数或公式中没有可用数值时,将产生错误值#N/A。
解决方法:如果工作表中某些单元格暂时没有数值,请在这些单元格中输入"#N/A",公式在引用这些单元格时,将不进行数值计算,而是返回#N/A。
(6)#REF!
当单元格引用无效时将产生错误值#REF!。
原因:删除了由其他公式引用的单元格,或将移动单元格粘贴到由其他公式引用的单元格中。
解决方法:更改公式或者在删除或粘贴单元格之后,立即单击"撤消"按钮,以恢复工作表中的单元格。
(7)#NUM!
当公式或函数中某个数字有问题时将产生错误值#NUM!。
原因一:在需要数字参数的函数中使用了不能接受的参数。
解决方法:确认函数中使用的参数类型正确无误。
原因二:使用了迭代计算的工作表函数,例如:IRR或RATE,并且函数不能产生有效的结果。
解决方法:为工作表函数使用不同的初始值。
原因三:由公式产生的数字太大或太小,Excel不能表示。
解决方法:修改公式,使其结果在有效数字范围之间。
(8)#NULL!
当试图为两个并不相交的区域指定交叉点时将产生错误值#NULL!。
原因:使用了不正确的区域运算符或不正确的单元格引用。
解决方法:如果要引用两个不相交的区域,请使用联合运算符逗号(,)。公式要对两个区域求和,请确认在引用这两个区域时,使用逗号。如:SUM(A1:A13,D12:D23)。如果没有使用逗号,Excel将试图对同时属于两个区域的单元格求和,但是由于A1:A13和D12:D23并不相交,所以他们没有共同的单元格。
1.29 金额大写的转换
假设A1单元格为原始数据,即小写数字。
公式法一:
=IF(A1=0,"零元整",IF(A1<0,"负",)&IF(INT(ABS(A1)),TEXT(INT(ABS(A1)),"[dbnum2]")&"元",)&IF(INT(ABS(A1)*10)-INT(ABS(A1))*10,TEXT(INT(ABS(A1)*10)-INT(ABS(A1))*10,"[dbnum2]")&"角",IF(INT(ABS(A1))=ABS(A1),,"零"))&IF(ROUND(ABS(A1)*100-INT(ABS(A1)*10)* 10,) , TEXT(ROUND(ABS(A1)*100-INT(ABS(A1)*10)*10,),"[dbnum2]")&"分","整"))
公式法二:
=IF(A1<0,"负",)&TEXT(TRUNC(ABS(A1)),"[DBNum2]G/通用格式")&"元"&IF(ROUND(A1,3) =ROUND(A1,),"整",TEXT(RIGHT(TRUNC(A1*10),1),"[DBNum2]G/通用格式")&"角"&IF (ROUND(A1,3)=ROUND(A1,1),"整",TEXT(RIGHT(ROUND((A1*100),),1),"[DBNum2]G/通用格式")&"分"))
公式法三:
=CONCATENATE(TEXT(INT(A1),"[DBNum2][$-804]G/通用格式")&"元"&IF((INT(A1*10) -INT(A1)*10)=0,"",TEXT(IF(AND(CEILING(A1*100,1)-INT(A1*10)*10=10,INT(A1*1000)-INT(A1*100)*10>=5),INT(A1*10)-INT(A1)*10 1,INT(A1*10)-INT(A1)*10),"[DBNum2][$-804]G/通用格式")&"角")&IF(OR(INT(A1*100)-INT(A1*10)*10=0,(IF(INT(A1*1000)-INT(A1*100)*10>=5,CEILING(A1* 100,1)-INT(A1*10)*10=10,FALSE))),"整",(IF(INT(A1*1000)-INT(A1*100)*10>=5,(IF(CEILING(A1 *100,1)-INT(A1*10)*10=10,"",(TEXT(CEILING(A1*100,1)-INT(A1*10)*10,"[DBNum2][$-804]G/通用格式")&"分"))),(TEXT(INT(A1*100)-INT(A1*10)*10,"[DBNum2][$-804]G/通用格式")&"分")))),"(¥",FIXED(A1,2,TRUE),"元)")
四、VBA代码法(自定义函数)
Public Function BigNum(xiaoxie As Currency)
Application.Volatile
Dim fuhao As String
fuhao = ""
If xiaoxie < 0 Then
xiaoxie = -xiaoxie
fuhao = "负"
End If
If xiaoxie = 0 Then
BigNum = "零元整"
Else
Const cNum = "零壹贰叁肆伍陆柒捌玖-万仟佰拾亿仟佰拾万仟佰拾元角分"
Const cCha = "零仟零佰零拾零零零零零亿零万零元亿万零角零分零整-零零零零零亿万元亿零整整"
BigNum = ""
sNum = Trim(Str(Int(Round(xiaoxie, 2) * 100)))
For i = 1 To Len(sNum)
BigNum = BigNum Mid(cNum, (Mid(sNum, i, 1)) 1, 1) Mid(cNum, 26 - Len(sNum) i, 1)
Next i
For i = 0 To 11
BigNum = Replace(BigNum, Mid(cCha, i * 2 1, 2), Mid(cCha, i 26, 1))
Next i
BigNum = fuhao BigNum
End If
End Function
上面四种办法中,方法一和方法四等价;方法二、三和方法一、四的区别只是整数部分为零时,方法一、四不显示“零元”,而直接显示“角分”;方法三在方法2的基础上加上了数字显示,下表是不同数据在四种方法中的显示结果:
原始数据
方法一
方法二
方法三
方法四
0.12
壹角贰分
零元壹角贰分
零元壹角贰分(¥0.12元)
壹角贰分
1.02
壹元零贰分
壹元零角贰分
壹元贰分(¥1.02元)
壹元零贰分
1001001
壹佰万壹仟零壹元整
壹佰万壹仟零壹元整
壹佰万壹仟零壹元整(¥1001001.00元)
壹佰万壹仟零壹元整
0
零元整
零元整
零元整(¥0.00元)
零元整
-25001
负贰万伍仟零壹元整
负贰万伍仟零壹元整
-贰万伍仟零壹元整(¥-25001.00元)
负贰万伍仟零壹元整
[/td][/tr][/table] |
|