Office中国论坛/Access中国论坛

标题: 将键入的阿拉伯数字自动转换成人民币大写金额 [打印本页]

作者: admin    时间: 2004-6-24 05:04
标题: 将键入的阿拉伯数字自动转换成人民币大写金额
将键入的阿拉伯数字自动转换成人民币大写金额

转自 ·青牛··yesky

在使用EXCEL过程中,在制作财务凭证时经常需要将数字表示为大写的数字金额,可用设置单元格格式的方法来实现:



  1.首先鼠标右键单击需要用大写金额显示的单元格。



  2.(*假设此单元格金额为123.50元*) → 设置单元格格式 → 数字 → 自定义 → 在类型框中输入 [DBNum2]0"百"0"拾"0"元"0"角""整" 即可将选中的单元格中的数字显示为大写金额:(壹百贰拾叁元伍角整)。



   (*假设此单元格金额为1234.51元*) → 设置单元格格式 → 数字 → 自定义 → 在类型框中输入 [DBNum2]0"千"0"百"0"拾"0"元"0"角"0"分""整" 即可将选中的单元格中的数字显示为大写金额:(壹千贰百叁拾肆元伍角壹分整)。
作者: xulanghui    时间: 2004-7-20 23:58
你的方法好像行不通,我用的是OFFICE2003。<COLGROUP><COL style="WIDTH: 54pt" width=72><COL style="WIDTH: 176pt; mso-width-source: userset; mso-width-alt: 7520" width=235>123.5零百壹拾贰元肆角整1234.51零千零百壹拾贰元叁角伍分整
作者: guankee    时间: 2004-7-22 21:28
我也是OFFICE2003123.4        <COLGROUP><COL style="WIDTH: 152pt; mso-width-source: userset; mso-width-alt: 6464" width=202>0千0百0拾1元2角3分整
作者: zzcad    时间: 2004-8-3 05:07
我的跟2、3楼一样啊!
作者: caoshuxue    时间: 2004-8-6 00:53
我直接输入1234 ,就自动变成大写
作者: 2015    时间: 2004-9-4 17:07
好像不行
作者: mfkjatflf    时间: 2004-9-5 01:16
不行啊,老兄!我是2000

[em04][em04]
作者: ppp-ppp    时间: 2004-9-9 06:46
不行的。我有一个函数转换公式。明天发上来。
作者: 远见卓识    时间: 2005-1-2 04:45
可以利用VBA编一个函数实现你的功能
作者: 远见卓识    时间: 2005-1-2 04:47
Function D(Q)

YBB = Round(Q * 100)

Y = Int(YBB / 100)

J = Int(YBB / 10) - Y * 10

F = YBB - Y * 100 - J * 10

ZY = Application.WorksheetFunction.Text(Y, "[DBNUM2]")

ZJ = Application.WorksheetFunction.Text(J, "[DBNUM2]")

ZF = Application.WorksheetFunction.Text(F, "[DBNUM2]")

D = ZY & "元"

If F <> 0 And J <> 0 Then

D = D & ZJ & "角" & ZF & "分"

If Y = 0 Then

D = ZJ & "角" & ZF & "分"

End If

End If

If F = 0 And J <> 0 Then

D = D & ZJ & "角"

If Y = 0 Then

D = ZJ & "角"

End If

End If

If F <> 0 And J = 0 Then

D = D & ZJ & ZF & "分"

If Y = 0 Then

D = ZF & "分"

End If

End If

If Q = "" Then

D = 0

End IfEnd Function
作者: geoffrey    时间: 2005-1-13 00:42
是不是很容易[attach]8566[/attach]


作者: 水晶葡萄    时间: 2005-1-15 00:34
得了。这样以后方便多了。3Q[em02]
作者: ec119    时间: 2005-2-4 20:12
不错!可惜的是书写不正规!负数,整字不能体现!
作者: liyh67    时间: 2005-2-12 00:50
[attach]8962[/attach]


作者: 西岭雪    时间: 2005-2-19 22:39
呵呵!!这是我请教过的。他们的答复好下!! '该函数源码取自网络,略作修改而成 钟跃勇

Public Function BigNum(小写数字 As Currency)

  Application.Volatile

  If 小写数字 = 0 Then

    BigNum = "零元整"

  Else

    Const cNum = "零壹贰叁肆伍陆柒捌玖-万仟佰拾亿仟佰拾万仟佰拾元角分"

    Const cCha = "零仟零佰零拾零零零零零亿零万零元亿万零角零分零整-零零零零零亿万元亿零整整"

    BigNum = ""

    sNum = Trim(Str(Int(Round(小写数字, 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

   End If

End Function


作者: wzdcw    时间: 2005-2-27 22:28
不用这么麻烦,选定单元格,点击右键选中设置单元格格式,点“数字”,“特殊”“类型”“中文大写数字”。就可以了。
作者: ahaoge    时间: 2005-3-4 03:34
自定义函数不清BIGNUM,保存为宏模块,加载宏,即可使用,公式=BIGNUM(number1)

Public Function BigNum(小写数字 As Currency)

  Application.Volatile

  If 小写数字 = 0 Then

    BigNum = "零元整"

  Else

    Const cNum = "零壹贰叁肆伍陆柒捌玖-万仟佰拾亿仟佰拾万仟佰拾元角分"

    Const cCha = "零仟零佰零拾零零零零零亿零万零元亿万零角零分零整-零零零零零亿万元亿零整整"

    BigNum = ""

    sNum = Trim(Str(Int(Round(小写数字, 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

   End If

End Function
作者: 扬扬628    时间: 2006-2-8 17:52
楼上的我看不懂,我以前学的全部忘了,好伤心!!
作者: ymzhu302    时间: 2006-8-1 06:36
我试试17楼的![em01][em01]
作者: tracyli    时间: 2006-9-1 17:30
16楼的方法我试了一下,结果是:



<COLGROUP>

<COL style="WIDTH: 123pt; mso-width-source: userset; mso-width-alt: 5248" width=164>





壹佰贰拾叁.伍
作者: zxwlcaitou    时间: 2006-9-14 06:32
标题: 回复:(admin)将键入的阿拉伯数字自动转换成人民币大...
顶起,试试能不能回贴了
作者: sundengpan    时间: 2006-9-26 01:17
直接用拼音加加输入发就可以!!!!!!!!!!![em05]
作者: jnjsh    时间: 2006-11-6 23:43
我也和二楼一样
作者: 清风细雨    时间: 2007-3-7 06:02
标题: 最佳答案
例如:将E3表格中的数学转换为人民币大写填在E2,把下列命令粘贴在E2单元格就行了.其他转换类同

=IF(INT(E13)-E13=0,CONCATENATE(TEXT(INT(E13),"[DBNum2]"),"元整"),CONCATENATE(TEXT(INT(E13),"[DBNum2]"),"元",TEXT(MID(E13*100,LEN(E13*100)-1,1),"[DBNum2]"),"角",TEXT(RIGHT(E13*100,1),"[DBNum2]"),"分元整"))

[此贴子已经被作者于2007-3-6 22:03:18编辑过]


作者: flydove    时间: 2007-4-6 19:10
這個什不行的。
作者: clockx4    时间: 2007-8-15 17:43
好像有附件的吧?楼主1!
作者: jsnjxb    时间: 2007-9-21 09:39
是否要用到公式
作者: 红池坝    时间: 2007-10-9 08:53
天啦,这个用公式很简单的,居然连VBA也使上了,用得着吗??
作者: zhke    时间: 2007-12-4 07:12
收下好好学习,感激不尽啊
作者: iiiiiiiiii    时间: 2007-12-7 00:45
学习学习

作者: rogerwei    时间: 2007-12-8 20:37
其实最简单的方法是用搜狗拼音
作者: yanglong030    时间: 2007-12-10 22:15
我试过了的,行的,,真的很棒,高手啊,,,谢谢了,
作者: yanglong030    时间: 2007-12-12 09:17
我上次下的教程被我SHIFT+DELETE删了,,唉,,可惜啊,,是我的心血啊,,,现在只有重来下了,,,,
作者: yanglong030    时间: 2007-12-17 09:02
怎么不行啊,我都试过了,,都可以的,
       谢谢楼主了,
作者: livewire    时间: 2007-12-30 10:59
Excel2003版: 设置格式为特殊格式, 中文大写.
作者: BFLK    时间: 2008-3-5 14:57
用下面的函数
=IF(Round([A1],2)<0,"无效数值",IF(Round([A1],2)=0,"零",IF(Round([A1],2)<1,"",Text(Int(Round([A1],2)),"[dbnum2]") & "元") & IF(Int(Round([A1],2)*10)-Int(Round([A1],2))*10=0,IF(Int(Round([A1],2))*(Int(Round([A1],2)*100)-Int(Round([A1],2)*10)*10)=0,"","零"),Text(Int(Round([A1],2)*10)-Int(Round(A1,2))*10,"[dbnum2]") & "角") & IF((Int(Round([A1],2)*100)-Int(Round([A1],2)*10)*10)=0,"整",Text((Int(Round([A1],2)*100)-Int(Round([A1],2)*10)*10),"[dbnum2]") & "分")))
作者: ytklhg    时间: 2008-4-2 17:40
谢谢楼主,很不错!学习了!
作者: 水仙    时间: 2008-4-3 16:24
=""&IF(A6<0,"负",)&TEXT(TRUNC(ABS(A6)),"[DBNum2]G/通用格式")&"元"&IF(ROUND(A6,3)=ROUND(A6,),"整",TEXT(RIGHT(TRUNC(A6*10),1),"[DBNum2]G/通用格式")&"角"&IF(ROUND(A6,3)=ROUND(A6,1),"整",TEXT(RIGHT(ROUND((A6*100),),1),"[DBNum2]G/通用格式")&"分"))

有颜色是引用的单元格,只要在引用单元格输入数值就可以自动生成大写!
希望大家成功!
作者: wnsfzf    时间: 2009-7-6 07:32
不行的




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3