EXCEL,数字变大写公式

合集下载

怎样在EXCEL中数字转人民币大写

怎样在EXCEL中数字转人民币大写

怎样在EXCEL中数字转人民币大写1.第一种方法:通过函数嵌套实现数字转人民币大写形式的公式是:=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]")&"分")数字转人民币大写形式的公式是:="大写金额:"&IF(TRIM(B1)="","",IF(B1=0,"","人民币"&IF(B1<0,"负",)&IF(INT(B1),TEXT(INT(ABS(B1)),"[dbnum2]")&"元",)&IF(INT(ABS(B1)*10)-INT(ABS(B1))*10,TEXT(INT(ABS(B1)*10)-INT(ABS(B 1))*10,"[dbnum2]")&"角",IF(INT(ABS(B1))=ABS(B1),,IF(ABS(B1)<0.1,,"零")))&IF(ROUND(ABS(B1)*100-INT(ABS(B1)*10)*10,),TEXT(ROUND(ABS(B1)*100 -INT(ABS(B1)*10)*10,),"[dbnum2]")&"分","整")))12508.34 大写金额:壹万贰仟伍佰零捌元叁角肆分数字转人民币大写形式的公式是:="大写金额:"&IF(TRIM(B1)="","",IF(B1=0,"",""&IF(B1<0,"负",)&IF(INT(B1),TEXT(INT(ABS(B1)),"[dbnum2]")&"元",)&IF(INT(ABS(B1)*10)-INT(ABS(B1))*10,TEXT(INT(ABS(B1)*10)-INT(ABS(B 1))*10,"[dbnum2]")&"角",IF(INT(ABS(B1))=ABS(B1),,IF(ABS(B1)<0.1,,"零")))&IF(ROUND(ABS(B1)*100-INT(ABS(B1)*10)*10,),TEXT(ROUND(ABS(B1)*100 -INT(ABS(B1)*10)*10,),"[dbnum2]")&"分","整")))这类转换的格式没有“人民币”字样1.第二种方法:通过宏VBA自定义函数实现第一步:按下ALT+F11组合键,或者是单击工具——宏——Visual Basic 编辑器,进入Visual Basic编程环境,单击“插入” 菜单——模块,复制下面代码,保存,退出关闭。

把单元格中数字快速转化为中文大写的方法

把单元格中数字快速转化为中文大写的方法

把单元格中数字快速转化为中文大写的方法将单元格中数字快速转化为中文大写的方法介绍在Excel中,有时我们需要将数字转化为中文大写,例如将12345转化为一万二千三百四十五。

本文将介绍几种快速将单元格中数字转化为中文大写的方法。

方法一:使用Excel自带函数Excel自带了一个函数=TEXT(value, "[$-0804][DBNum2]G/通用格式"),可以将数字转化为中文大写形式。

使用步骤: 1. 在一个空白单元格中输入=TEXT(A1, "[$-0804][DBNum2]G/通用格式"),其中A1为要转化的数字所在的单元格。

2. 按下Enter键即可看到转化后的中文大写数字。

方法二:使用VBA宏如果需要频繁使用该功能,可以使用VBA宏将其封装为一个函数,以便更加方便地调用。

使用步骤: 1. 按下ALT + F11打开VBA编辑器。

2. 在VBA编辑器中,选择要添加宏的工作簿。

3. 在模块中,插入以下VBA代码:Function ChineseNumber(ByVal Value As Variant) As S tringDim MyNumber As CurrencyDim DecimalPlace As IntegerDim Count As IntegerDim DecimalSeparator As StringDim Temp As StringDim DecimalValue As StringDim DecimalWords As StringDim ReturnValue As StringDecimalSeparator = "点"ReDim Place(9) As StringPlace(2) = "十"Place(3) = "百"Place(4) = "千"Place(5) = "万"Place(6) = "十"Place(7) = "百"Place(8) = "千"Place(9) = "亿"' Convert MyNumber to string, separate integral and decimalMyNumber = Trim(CStr(Value))DecimalPlace = InStr(MyNumber, ".")If DecimalPlace > 0 ThenDecimalValue = GetTens(Left(Mid(MyNumber, Decima lPlace + 1) & "00", 2))MyNumber = Trim(Left(MyNumber, DecimalPlace - 1)) End IfCount = 1Do While MyNumber <> ""Temp = GetHundreds(Right(MyNumber, 3))If Temp <> "" Then ReturnValue = Temp & Place(Co unt) & ReturnValueIf Len(MyNumber) > 3 ThenMyNumber = Left(MyNumber, Len(MyNumber) - 3) ElseMyNumber = ""End IfCount = Count + 1LoopSelect Case ReturnValueCase ""ReturnValue = "零"Case "一十"ReturnValue = "十"End SelectChineseNumber = ReturnValue & DecimalSeparator & Dec imalValueEnd FunctionFunction GetHundreds(ByVal MyNumber)Dim Result As StringIf Val(MyNumber) = 0 Then Exit FunctionMyNumber = Right("000" & MyNumber, 3)' Convert the hundreds place.If Mid(MyNumber, 1, 1) <> "0" ThenResult = GetDigit(Mid(MyNumber, 1, 1)) & "百"End If' Convert the tens and ones place.If Mid(MyNumber, 2, 1) <> "0" ThenResult = Result & GetTens(Mid(MyNumber, 2))ElseResult = Result & GetDigit(Mid(MyNumber, 3))End IfGetHundreds = ResultEnd FunctionFunction GetTens(TensText)Dim Result As StringResult = "" ' Null out the temporary funct ion value.If Val(Left(TensText, 1)) = 1 Then ' If value betw een 10-19...Select Case Val(TensText)Case 10: Result = "十"Case 11: Result = "十一"Case 12: Result = "十二"Case 13: Result = "十三"Case 14: Result = "十四"Case 15: Result = "十五"Case 16: Result = "十六"Case 17: Result = "十七"Case 18: Result = "十八"Case 19: Result = "十九"Case ElseEnd SelectElse ' If value betw een 20-99...Select Case Val(Left(TensText, 1))Case 2: Result = "二十"Case 3: Result = "三十"Case 4: Result = "四十"Case 5: Result = "五十"Case 6: Result = "六十"Case 7: Result = "七十"Case 8: Result = "八十"Case 9: Result = "九十"Case ElseEnd SelectResult = Result & GetDigit _(Right(TensText, 1)) ' Retrieve ones place. End IfGetTens = ResultEnd FunctionFunction GetDigit(Digit)Select Case Val(Digit)Case 1: GetDigit = "一"Case 2: GetDigit = "二"Case 3: GetDigit = "三"Case 4: GetDigit = "四"Case 5: GetDigit = "五"Case 6: GetDigit = "六"Case 7: GetDigit = "七"Case 8: GetDigit = "八"Case 9: GetDigit = "九"Case Else: GetDigit = ""End SelectEnd Function4.按下CTRL + S保存宏。

excel数字大写转换公式

excel数字大写转换公式

excel数字大写转换公式Excel是一款功能强大的电子表格软件,它不仅可以进行数据的计算和分析,还可以对数据进行格式化和展示。

其中一个常用的功能就是将数字转换为大写的金额,这在一些财务报表和合同中非常常见。

本文将介绍关于Excel数字大写转换公式的使用方法和注意事项。

我们需要明确一点,Excel并没有内置的函数来直接将数字转换为大写金额。

因此,我们需要使用一些自定义的公式来实现这个功能。

下面是一个常用的公式:```=UPPER(TEXT(A1,"[$-0804][DBNum2]G/通用格式"))```这个公式使用了TEXT函数和UPPER函数来实现金额的大写转换。

其中,A1表示要转换的单元格,你可以根据自己的需求来修改。

这个公式的一个特点是,它可以将小数点后两位的金额转换为大写,而不仅仅是整数部分。

需要注意的是,这个公式中的“[$-0804][DBNum2]G/通用格式”部分是一个格式代码,它可以将金额以大写的形式显示出来。

在使用时,你可以根据自己的需要选择其他的格式代码,比如“[$-0804][DBNum2]G/货币”可以将金额以货币的形式显示出来。

这个公式还有一个限制,就是它只能将金额转换为大写的中文形式。

如果你需要将金额转换为其他语言的大写形式,那么你可能需要使用其他的公式或者宏来实现。

除了上面介绍的公式,还有一些其他的方法可以实现金额的大写转换。

比如,你可以使用VBA宏来编写一个自定义的函数,然后在Excel中调用这个函数来实现转换。

不过,这个方法需要一些编程的知识,对于一般用户来说可能比较复杂。

除了将数字转换为大写金额,Excel还有很多其他的数字格式化功能。

比如,你可以使用“¥0.00”格式将数字显示为带有货币符号的两位小数形式。

你还可以使用“0.00%”格式将数字显示为百分比形式。

这些功能都可以在Excel的格式化选项中找到,非常方便。

Excel的数字大写转换功能是一个非常实用的功能,可以帮助我们更好地展示和格式化数据。

手把手教你转换出中文大写金额

手把手教你转换出中文大写金额

手把手教你转换出中文大写金额大家在使用Excel的时候,是否会遇到要把一个或一些阿拉伯数字转换成中文大写金额的计算要求呢?如果只是偶尔需要对少数几个数字进行转换,干脆手工操作啦,但如果要进行转换的数字较多或经常要转换时,该怎么办呢?一向无往不胜的Excel能为你做些什么呢?其实,这个不难,最少有三种方法可以实现。

<br>一、设置单元格格式:<br>用这个办法能直接将阿拉伯数字转换成中文大写金额,而且操作简单。

右击需要转换的单元格,在弹出的快捷菜单中选择“单元格格式”,然后在“数字”选项卡中选择“自定义”,在“类型”中写入“[DBNum2]G/通用格式"元"”后按确定即可。

瞧,321是不是已经变成了“叁佰贰拾壹元”了?<br> 可惜的是,这个办法只能处理整数,而对带有小数的数字无能为力。

当然也有过朋友通过对此法进行一定的扩展而可以处理部分带小数的数字,但效果不是很理想。

<br>二、利用中文大写金额转换函数:<br>先别急,这个函数你在Excel里是找不到的,微软毕竟不是大陆公司!这个函数被收集在本站开发的“Excel扩展函数集”里,下载这个函数集,按说明进行安装后,在Excel中运用一个叫EHDXRMB()的函数就可以将任意数字转换成中文大写金额。

具体情况在此就不多进行介绍了。

<br>三、利用公式进行转换:<br>所谓“自力更生,丰衣足食”,这第三种方法就是自己编写公式进行转换。

虽然吝啬的小编连白开水也舍不得给我,但我还是一如既往地发扬大公无私之精神将独门密技告之天下,包学包会,不会免费再学……(小编:STOP!再要是废话就OUT!)<br>为了照顾一些Excel初学者,我们先来了解一下什么是Excel里的公式与函数。

Excel之所以计算功能异常强大,百分之八十的功劳就在于用户可以创建公式进行计算。

在EXCEL中将数字转换为人民币大写的三种方式

在EXCEL中将数字转换为人民币大写的三种方式

鉴于本身提供将数字转换为大写表示地功能根本不能正常应用在实际投标或财务应用之中,所以要自己建设,暂时找到了三种实现途径,经过测试均功能正常,还有一种是在书上找到地,懒得进来了,反正也差不多了.方法,通过在表格框(例如在“”单元)中直接输入以下公式:(<,"金额为负无效",(((""),"(人民币)零元",(<,"(人民币)",((),"[](人民币)通用格式")"元"))))(((*)()*),((*)(*)*,"","零"),(((*)()*,"[]")"角"))(((*)(*)*),"整",(((*)(*)*),"[]")"分") 个人收集整理勿做商业用途然后在“”中输入数字,就可看到效果.方法,通过(宏)输入转换公式: 点击菜单“工具”>“宏”>“编辑器”,在编辑器窗口中,点击菜单“插入”>“模块”,在出现地窗口中输入以下内容:个人收集整理勿做商业用途( ) ' 人民币中文大写函数"分角元拾佰仟万拾佰仟亿拾佰仟万""壹贰叁肆伍陆柒捌玖""整零元零零零万零零零亿零零零万"< "(负)"((), "") *> : "数字超出转换范围!!":: "零元零分":(())()' 数字转换过程((, , ))<> ' 非零数字转换(, , ) (, , )' 数字零地转换(, ) <> "零"(, , )' 特殊数位转换(, () ) (, , ),(, () ) (, , ) "零"(, () , ) <> "亿"(, () ) (, , ) "零""(人民币)" ()个人收集整理勿做商业用途然后切换回,在“”单元中输入数字,在“”单元中输入:“()”,就可看到效果.个人收集整理勿做商业用途方法,同样是通过公式,方法同上,公式如下:( ) ',"" '定义位置代码"" '定义汉字缩写"零壹贰叁肆伍陆柒捌玖拾佰仟萬億圆整角分" '定义大写汉字(, ".") > (, (, ".") )个人收集整理勿做商业用途() > "数目太大,无法换算!请输入一亿亿以下地数字", , "错误提示": '只能转换一亿亿元以下数目地货币!个人收集整理勿做商业用途(, "") '格式化货币""()(, , ) (, () , )(, ) """" '***元整((, ), ) "" (, ) "" '*元*角*分(, "", "") '避免零千(如:肆萬零千零贰佰)(, "", "") '避免零百(如:肆萬壹千零佰)(, "", "") '避免零十(如:贰佰零拾零肆)个人收集整理勿做商业用途<> (, "", "")(, "", "") '避免双零(如:壹仟零零肆)(, "", "") '避免零億(如:億贰佰壹十零億)(, "", "") '避免零萬(如:萬贰佰壹十零萬)(() (, ) "", (, () ), ) '避免壹十(如:壹拾肆;壹拾)(() , (, ".", ""), (, ".", ".")) '避免零元(如:贰拾零圆;零圆壹角贰分)个人收集整理勿做商业用途(, (, , ), (, , )) '大写汉字"(人民币)"个人收集整理勿做商业用途切换回,在“”单元中输入数字,在“”单元中输入:“()”,就可看到效果.个人收集整理勿做商业用途实现地效果比较如下:(人民币)壹仟贰佰叁拾肆元伍角整直接公式(人民币)壹仟贰佰叁拾肆元伍角整()(人民币)壹仟贰佰叁拾肆圆伍角零分()。

完美无缺——Excel中转换人民币大写公式

完美无缺——Excel中转换人民币大写公式

Excel中转换人民币大写(公式一)本公式采用IF、ABS、TEXT、INT函数结合国标数据[DBNum2]利用连接符&,严密组合,完成对指定单元格的阿拉伯数字金额数值转换成中文大写,完全符合各种情形的数值转换。

例如:将单元格b6输入如数值1000.2元,在b7单元格输入以下红字:=IF(B6<0,"负","")&IF((ABS(B6))<0.1,(TEXT(INT((ABS(B6))*100)-INT((ABS(B6))*10)*10,"[DBNum2]")& "分"),IF((ABS(B6))<1,(TEXT(INT((ABS(B6))*10)-INT((ABS(B6)))*10,"[DBNum2]")&"角")&IF((INT((ABS(B6))*100)-INT((ABS(B6))*10)*10)=0,"整",(TEXT(INT((ABS(B6))*100)-INT((ABS(B6))*10)*10,"[DBNum2]")&"分")),IF((ABS(B6))>=1,TEXT(INT((ABS(B6))),"[DBNum2]")&"元"&IF((INT((ABS(B6))*10)-INT((ABS(B6)))*10)=0,"",TEXT(INT((ABS(B6))*10)-INT((ABS(B 6)))*10,"[DBNum2]")&"角")&IF((INT((ABS(B6))*100)-INT((ABS(B6))*10)*10)=0,"整",IF((INT((ABS(B6))*10)-INT((ABS(B6)))*10)=0,"零"&TEXT(INT((ABS(B6))*100)-INT((ABS(B6))*10)*10,"[DBNum2]")&"分",TEXT(INT((ABS(B6))*100)-INT((ABS(B6))*10)*10,"[DBNum2]")&"分")))),则b7单元格显示壹仟元贰角整;如果公式前连接“人民币”,即b7单元格中输入=”人民币”&IF(B6<0,"负","")&IF((ABS(B6))<0.1,(TEXT(INT((ABS(B6))*100)-INT((ABS(B6))*10)*10,"[DBNum2]")& "分"),IF((ABS(B6))<1,(TEXT(INT((ABS(B6))*10)-INT((ABS(B6)))*10,"[DBNum2]")&"角")&IF((INT((ABS(B6))*100)-INT((ABS(B6))*10)*10)=0,"整",(TEXT(INT((ABS(B6))*100)-INT((ABS(B6))*10)*10,"[DBNum2]")&"分")),IF((ABS(B6))>=1,TEXT(INT((ABS(B6))),"[DBNum2]")&"元"&IF((INT((ABS(B6))*10)-INT((ABS(B6)))*10)=0,"",TEXT(INT((ABS(B6))*10)-INT((ABS(B 6)))*10,"[DBNum2]")&"角")&IF((INT((ABS(B6))*100)-INT((ABS(B6))*10)*10)=0,"整",IF((INT((ABS(B6))*10)-INT((ABS(B6)))*10)=0,"零"&TEXT(INT((ABS(B6))*100)-INT((ABS(B6))*10)*10,"[DBNum2]")&"分",TEXT(INT((ABS(B6))*100)-INT((ABS(B6))*10)*10,"[DBNum2]")&"分")))),,则b7单元格显示人民币壹仟元贰角整(公式二)本公式采用IF、ABS、TEXT、TRUNC、ISERR、FIND、RIGHT、LEFT、ROUND 函数结合国标数据[DBNum2]利用连接符&,严密组合,完成对指定单元格的阿拉伯数字金额数值转换成中文大写,完全符合各种情形的数值转换。

在EXCEL中将数字转换为人民币大写的三种方式

在EXCEL中将数字转换为人民币大写的三种方式

在EXCEL中将数字转换为人民币大写的三种方式鉴于EXCEL本身提供将数字转换为大写表示的功能根本不能正常应用在实际投标或财务应用之中,所以要自己建设,暂时找到了三种实现途径,经过测试均功能正常,还有一种是在书上找到的,懒得KEYIN进来了,反正也差不多了。

方法1,通过在EXCEL表格框(例如在“B1”单元)中直接输入以下公式:=IF(A1<0,"金额为负无效",(IF(OR(A1=0,A1=""),"(人民币)零元",IF(A1<1,"(人民币)",TEXT(INT(A1),"[dbnum2](人民币)G/通用格式")&"元"))))&IF((INT(A1*10)-INT(A1)*10)=0,IF(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”中输入数字,就可看到效果。

方法2,通过VBA(宏)输入转换公式: 点击菜单“工具”->“宏”->“VisualBasic编辑器”,在编辑器窗口中,点击菜单“插入”->“模块”,在出现的窗口中输入以下内容:Function daxie(ByVal Num) ' 人民币中文大写函数Application.Volatile TruePlace = "分角元拾佰仟万拾佰仟亿拾佰仟万"Dn = "壹贰叁肆伍陆柒捌玖"D1 = "整零元零零零万零零零亿零零零万"If Num < 0 Then FuHao = "(负)"Num = Format(Abs(Num), "###0.00") * 100If Num > 999999999999999# Then: daxie = "数字超出转换范围!!": Exit FunctionIf Num = 0 Then: daxie = "零元零分": Exit FunctionNumA = Trim(Str(Num))NumLen = Len(NumA)For J = NumLen To 1 Step -1 ' 数字转换过程temp = Val(Mid(NumA, NumLen - J + 1, 1))If temp <> 0 Then ' 非零数字转换NumC = NumC & Mid(Dn, temp, 1) & Mid(Place, J, 1) Else ' 数字零的转换If Right(NumC, 1) <> "零" ThenNumC = NumC & Mid(D1, J, 1)ElseSelect Case J ' 特殊数位转换Case 1NumC = Left(NumC, Len(NumC) - 1) & Mid(D1, J, 1)Case 3, 11NumC = Left(NumC, Len(NumC) - 1) & Mid(D1, J, 1) & "零"Case 7If Mid(NumC, Len(NumC) - 1, 1) <> "亿" ThenNumC = Left(NumC, Len(NumC) - 1) & Mid(D1, J, 1) & "零"End IfCase ElseEnd SelectEnd IfEnd IfNextdaxie = "(人民币)" & FuHao & Trim(NumC)End Function然后切换回excel,在“A2”单元中输入数字,在“B2”单元中输入:“=DaXie(A2)”,就可看到效果。

excel数字变大写的函数

excel数字变大写的函数

excel数字变大写的函数Excel 是一款功能强大的电子表格软件,广泛应用于商业、财务、教育等领域。

在日常使用中,我们经常会遇到将数字转换为大写的需求,例如将金额数字转换为大写金额。

Excel 提供了一些函数来实现这个需求,本文将介绍如何使用这些函数来将数字转换为大写。

在Excel 中,有几个函数可以帮助我们将数字转换为大写。

其中最常用的是“DOLLAR”函数。

这个函数的语法是“DOLLAR(number, decimals)”。

“number”是需要转换的数字,“decimals”是保留的小数位数。

例如,如果我们要将数字12345.67转换为大写金额,可以使用以下公式:=DOLLAR(12345.67, 2)这个公式将返回“Twelve Thousand Three Hundred Forty-Five and 67/100”。

通过设置“decimals”的值,我们可以控制保留的小数位数。

除了“DOLLAR”函数,Excel 还提供了“TEXT”函数来将数字转换为文本。

这个函数的语法是“TEXT(value, format_text)”。

“value”是需要转换的数字,“format_text”是转换的格式。

例如,如果我们要将数字12345.67转换为大写金额,可以使用以下公式:=TEXT(12345.67, "[$CNY]#,##0.00")这个公式将返回“人民币贰万叁仟肆佰伍拾元陆角柒分”。

通过设置“format_text”的值,我们可以控制转换的格式,例如设置为“[$USD]#,##0.00”可以转换为美元格式。

除了上述两个函数,Excel 还提供了一个内置的宏函数“PROPER”来将数字转换为大写。

这个函数的语法是“PROPER(text)”。

“text”是需要转换的文本。

例如,如果我们要将数字12345.67转换为大写金额,可以使用以下公式:=PROPER("Twelve Thousand Three Hundred Forty-Five and 67/100")这个公式将返回“Twelve Thousand Three Hundred Forty-Five And 67/100”。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

近来转了转几个EXCEL相关论坛,发现有部分网友在寻求数字金额转换为人民币大写的方法。

出于好奇,我在网上搜索了一番,什么VBA、加载宏,公式函数各式方法争相亮相,应有尽有。

但我的习惯是,只要能用公式解决的问题,坚决不使用VBA。

所以我就特别地关注使用公式来生成的方法,结果是用公式的方法可谓是更加地灿烂缤纷,使人眼花缭乱。

通过分析我收集到的二十几个公式,发现比较牛,适合我口味的公式有三个,在此我将其列出。

公式一:SUBSTITUTE(SUBSTITUTE(IF(A1<0,"负","")&TEXT(TRUNC(ABS(ROUND(A1,2))),"[DBNum2]")&"元"&IF(ISERR(FIND(".",ROUND(A1,2))),"",TEXT(RIGHT(TRUNC(ROUND(A1,2)*10) ),"[DBNum2]"))&IF(ISERR(FIND(".0",TEXT(A1,"0.00"))),"角","")&IF(LEFT(RIGHT(ROUND(A1,2),3))=".",TEXT(RIGHT(ROUND(A1,2)),"[DBN um2]")&"分",IF(ROUND(A1,2)=0,"","整")),"零元零",""),"零元","")公式二:CONCATENATE(IF(A1<0,"负",""),TEXT(IF(TRUNC(A1)=0,"",TRUNC(ABS(A1))),"[DBNum2]"),IF(INT(TRUNC (A1))=0,"","元"),TEXT(IF(OR(ABS(A1)<0.1,TRUNC(A1)=A1),"",RIGHT(TRUNC(A1*10),1)),"[D BNum2]"),IF(RIGHT(TRUNC(A1*10),1)="0","","角"),TEXT(IF(RIGHT(TRUNC(A1*100),1)="0","",RIGHT(TRUNC(A1*100),1)),"[DB Num2]"),IF(RIGHT(TRUNC(A1*100),1)="0","","分"))公式三:IF(ROUND(A1,2)=0,"",IF(ROUND(ABS(A1),2)>=1,TEXT(INT(ROUND(ABS(A1),2)) ,"[DBNum2]")&"元","")&IF(RIGHT(TEXT(A1,".00"),2)*1=0,"整",IF(RIGHT(TEXT(A1,".00"),4)*1>=1,IF(RIGHT(TEXT(A1,".00"),2)*1>9,"","零"),IF(ROUND(ABS(A1),2)>=1,"零",""))&IF(RIGHT(TEXT(A1,".00"),2)*1>9,TEXT(LEFT(RIGHT(TEXT(A1,".00"), 2)),"[DBNum2]")&"角","")&IF(RIGHT(TEXT(A1,".00"))*1>0,TEXT(RIGHT(TEXT(A1,".00")),"[DBNum 2]")&"分","整")))我用不同的数值对这三个公式进行了一番测试,都达到了我的要求,至少到目前为止还没有发现上述公式存在着什么错误。

上述公式对负数的处理采取了不同的方法。

公式一和公式二对负数是在其前部加上一个“负”字,而公式三则是按正数进行处理。

我比较推崇公式三的方式,不是还有条件格式可以设置吗?若是负数就用条件格式来变为红色。

我不准备在此对上述公式进行分析解说。

撰写本文的目的是我也想自己来“组装”一个所谓的通用公式。

我只所以说是“组装”而不是叫什么“开发”或者是“拼凑”,是因为EXCEL的函数现成地摆在了那里,使用时就是为了达到某种目的,按照其固有的规则,将其进行有机的组合,可谓“组装”。

但是在这个过程中,也是要开动脑筋的,并非是随随便便“拼凑”就能成功的。

本文的目的就是想将我在“组装”公式时的思路展现出来。

若用程序设计语言(比如用C语言)来写一个人民币数字金额转大写金额会怎样考虑呢?我想每一位数字都要考虑到。

但在EXCEL中,单元格格式中有一个“特殊”格式,里面就有将小写数字转换为大写数字的格式。

但要注意的是,这里转换的是数字而不是金额。

所以转换出来后并不存在“元”、“角”、“分”、“整”等在大写金额中出现的字。

但是,“元”只出现在整数部分的后面,而小数部分只有角分两位。

这样只要利用EXCEL的“特殊”格式将数据分为整数部分、角位和分位三个部分来处理就行了。

处理的顺序是先整数,再角位、再分位。

由于要分三个部分分别处理,然后根据情况分别与“元”,“角”,“分”及“整”相连接。

连接的方式可以使用CONCATENATE()函数,如公式二,也可以使用连接符&。

而用&来连接,公式结构似乎会相对简单清晰一些,所以我选择了用&来连接。

虽然对问题进行了分解,但需要考虑的细节相当多。

若单元格为0或者空,输出空,避免出现“零”、“零元”等字样。

对非数字字符不进行处理,使用EXCEL自身的错误提示。

对负数按正数处理,再用条件格式将其转换为红色,不拟采用“负XXXXXX”的形式。

整数加“元”,若是纯整数,就只处理整数且加“整”,不再处理小数部分。

若是纯小数,放在小数部分处理,不单独列出处理。

角为0且分不为0,应输出“零”,只有角的就加“整”如果有尾数,即有3位以上小数(这种情况也许很少发生,但作为一个“通用”公式,却不能不考虑这种情况)。

则有两种处理方式,一是截尾,另一则是四舍五入。

由于两种方式的排它性。

决定做两个公式。

如果数值小于分,截尾公式输出空,而四舍五入公式则要考虑舍入问题。

若有舍入输出分,没有则输出空。

根据这个思路,我“组装”了下面两个公式。

公式四:IF(A1=0,"",IF(ABS(A1)<0.995,"",TEXT(INT(ROUND(ABS(A1),2)),"[DBNum2]")&"元")&IF(RIGHT(TEXT(A1,".00"),2)*1=0,IF(ABS(A1)<0.005,"","整"),TEXT(IF(ABS(A1)<0.095,"",LEFT(RIGHT(TEXT(A1,".00"),2))),"[dbnum2]" )&IF(LEFT(RIGHT(TEXT(A1,".00"),2))*1=0,"","角")&IF(RIGHT(TEXT(A1,".00"))*1=0,"整",TEXT(RIGHT(TEXT(A1,".00")),"[dbnum2]")&"分")))公式五:IF(A1=0,"",IF(ABS(A1)<1,"",TEXT(TRUNC(ABS(A1)),"[DBNum2]")&"元")&IF(RIGHT(TRUNC(A1*100),2)*1=0,IF(ABS(A1)<0.01,"","整"),IF(ABS(A1)<0.1,"",TEXT(RIGHT(TRUNC(A1*10)),"[dbnum2]"))&IF(RIGHT(T RUNC(A1*10))*1=0,"","角")&IF(RIGHT(TRUNC(A1*100))*1=0,"整",TEXT(RIGHT(TRUNC(A1*100)),"[dbnum2]")&"分")))公式四是四舍五入公式,公式五则是截尾公式。

两个公式的结构其实是一样的,只是使用了不同的函数。

下面用公式四来说明。

TEXT(INT(ROUND(ABS(A1),2)),"[DBNum2]")&"元"用来处理整数部分,考虑到纯小数及舍入问题,增加一个判断ABS(A1)<0.995,用0.995,即保证了正常的舍入,又避免了出现0.9945也进行舍入的错误。

用RIGHTB(TEXT(A1,".00"),2)*1=0来判断是不是纯整数,是就输出“整”,后面就不用处理了。

因为TEXT函数输出的是文本值,所以在这里有两种处理方法,一是就是本式,二是RIGHTB(TEXT(A1,".00"),2)="00"。

LEFT(RIGHT(TEXT(A1,".00"),2))是取出角位数,增加一个判断ABS(A1)<0.095是为了在只有分票的情况下角位避免出现“零”的字样,0.095也是考虑了尾数的舍入问题。

相关文档
最新文档