资源描述:
《在EXCEL中将数字转换为人民币大写的三种方式.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、在EXCEL中将数字转换为人民币大写的三种方式鉴于EXCEL本身提供将数字转换为大写表示的功能根本不能正常应用在实际投标或财务应用之中,所以要自己建设,暂时找到了三种实现途径,经过测试均功能正常,还有一种是在书上找到的,懒得KEYIN进来了,反正也差不多了。方法1,通过在EXCEL表格框(例如在“B1”单元)中直接输入以下公式:=IF(A1<0,"金额为负无效",(IF(OR(A1=0,A1=""),"(人民币)零元",IF(A1<1,"(人民币)",TEXT(INT(A1),"[dbnum2](人民币)G/通用格式")&"元"))))&IF((INT(A110)-INT(A
2、1)10)=0,IF(INT(A1100)-INT(A110)10=0,"","零"),(TEXT(INT(A110)-INT(A1)10,"[dbnum2]")&"角"))&IF((INT(A1100)-INT(A110)10)=0,"整",TEXT((INT(A1100)-INT(A110)10),"[dbnum2]")&"分")然后在“A1”中输入数字,就可看到效果。方法2,通过VBA(宏)输入转换公式:点击菜单“工具”->“宏”->“VisualBasic编辑器”,在编辑器窗口中,点击菜单“插入”->“模块”,在出现的窗口中输入以下内容:Functiondaxie(B
3、yValNum) '人民币中文大写函数 Application.VolatileTrue Place="分角元拾佰仟万拾佰仟亿拾佰仟万" Dn="壹贰叁肆伍陆柒捌玖" D1="整零元零零零万零零零亿零零零万" IfNum<0ThenFuHao="(负)" Num=Format(Abs(Num),"###0.00")100 IfNum>9999#Then:daxie="数字超出转换范围!!":ExitFunction IfNum=0Then:daxie="零元零分":ExitFunction NumA=Trim(Str(Num))
4、 NumLen=Len(NumA) ForJ=NumLenTo1Step-1 '数字转换过程 temp=Val(Mid(NumA,NumLen-J+1,1)) Iftemp<>0Then '非零数字转换 NumC=NumC&Mid(Dn,temp,1)&Mid(Place,J,1) Else '数字零的转换 IfRight(NumC,1)<>"零"Then NumC=NumC&Mid(D1,J,1) Else
5、 SelectCaseJ '特殊数位转换 Case1 NumC=Left(NumC,Len(NumC)-1)&Mid(D1,J,1) Case3,11 NumC=Left(NumC,Len(NumC)-1)&Mid(D1,J,1)&"零" Case7 IfMid(NumC,Len(NumC)-1,1)<>"亿"Then NumC
6、=Left(NumC,Len(NumC)-1)&Mid(D1,J,1)&"零" EndIf CaseElse EndSelect EndIf EndIf Next daxie="(人民币)"&FuHao&Trim(NumC)EndFunction然后切换回excel,在“A2”单元中输入数字,在“B2”单元中输入:“=DaXie(A2)”,就可看到效果。方法3,同样是通过VBA公式,方法同上,公式如下:Functiondaxie1(moneyAsString)AsStr
7、ing'DimxAsString,yAsStringConstzimu=".sbqwsbqysbqwsbq"'定义位置代码Constletter="sbqwy.zjf"'定义汉字缩写Constupcase="零壹贰叁肆伍陆柒捌玖拾佰仟萬億圆整角分"'定义大写汉字DimtempAsStringtemp=moneyIfInStr(temp,".")>0Thentemp=Left(temp,InStr(temp,".")-1)IfLen(temp)>16ThenMsgBox"数目太大,无法换算!请输入一亿亿以