excel中数字大小写转换

请教在如图的电子表格中如何能在填写大写金额后自动填写小写金额,或者填写小写金额能自动转成大写?

我正在写,写好发给你。QQ394901158 

写好了,是大写转小写的,以下是代码

Public b(1 To 12) As Integer

Const dx = "壹贰叁肆伍陆柒捌玖"

Sub 转换()

Dim strtemp As String, yi As String, wang As String, jie As String

Dim 第一个不为零 As Boolean, i As Integer, j As Integer, m As Integer

Const fj = "亿万元"

For i = 1 To 12

    b(i) = 0

Next i

Sheets("sheet1").Range("K7:V7").ClearContents

strtemp = Sheets("sheet1").Cells(6, 2)

For i = 1 To Len(fj)

If InStr(1, strtemp, Mid(fj, i, 1)) <> 0 Then

    a = InStr(1, strtemp, Mid(fj, i, 1))

    

    Call 分解(Left(strtemp, a - 1), i)

    strtemp = Right(strtemp, Len(strtemp) - a)

End If

Next i

Const fjj = "角分"

For j = 1 To Len(fjj)

If InStr(1, strtemp, Mid(fjj, j, 1)) <> 0 Then

    a = InStr(1, strtemp, Mid(fjj, j, 1))

    b(10 + j) = InStr(1, dx, Left(strtemp, 1))

    strtemp = Right(strtemp, Len(strtemp) - a)

End If

Next j

For m = 1 To 12

    If 第一个不为零 = False And b(m) >= 1 Then

        第一个不为零 = True

        Sheets("sheet1").Cells(7, 9 + m) = "¥"

        Sheets("sheet1").Cells(7, 10 + m) = b(m)

    ElseIf 第一个不为零 Then

        Sheets("sheet1").Cells(7, 10 + m) = b(m)

    End If

Next m

End Sub

Function 分解(strtemp As String, jie As Integer)

Const fj = "千百拾"

Dim se As String '数额

Dim s_Num As Integer

For i = 1 To Len(fj)

If InStr(1, strtemp, Mid(fj, i, 1)) <> 0 Then

    a = InStr(1, strtemp, Mid(fj, i, 1))

    se = Left(strtemp, a - 1)

    If se = "" Then se = "壹"

    If Len(se) > 1 Then

    s_Num = InStr(1, dx, Right(se, 1))

    Else

    s_Num = InStr(1, dx, se)

    End If

    If jie = 1 Then

        b(i - 2) = s_Num

    ElseIf jie = 2 Then

        b(i + 2) = s_Num

    

    ElseIf jie = 3 Then

        b(i + 6) = s_Num

    End If

        strtemp = Right(strtemp, Len(strtemp) - a)

        If strtemp = "" Then Exit Function

End If

Next i

    If Len(strtemp) = 2 Then

        If jie = 1 Then

            b(2) = InStr(1, dx, Right(strtemp, 1))

        ElseIf jie = 2 Then

            b(6) = InStr(1, dx, Right(strtemp, 1))

        Else

            b(10) = InStr(1, dx, Right(strtemp, 1))

        End If

    ElseIf Len(strtemp) = 1 Then

        If jie = 1 Then

            b(2) = InStr(1, dx, strtemp)

        ElseIf jie = 2 Then

            b(6) = InStr(1, dx, strtemp)

        Else

            b(10) = InStr(1, dx, strtemp)

        End If

    End If

End Function

在B7单元格输入大写的金额,回车后,在小写框中会自动转换过来。

注意大写的数字必须是“壹贰叁肆伍陆柒捌玖”中的文字,比如:伍拾,不能写成五拾。“亿万千百拾”不能是“亿万仟佰拾”。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-06-15
=IF(ABS(A1)<0.005,"",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(ABS(A1)<0.1,,"零")))&IF(ROUND(ABS(A1)*100-INT(ABS(A1)*10)*10,),TEXT(ROUND(ABS(A1)*100-INT(ABS(A1)*10)*10,),"[dbnum2]")&"分","整"))

这是,数字 转大写的公式 ,
你的表格要具体丢改后再用,发给我,给你改一下
soup5257@126.com
第2个回答  2010-06-15
小写转大写倒是有可能的,大写转小写的可能性不大。

发个表格我试试吧
做好回发给你

自己做这个表格,太麻烦,做个简化的,你不一定能用

k_3826621@163.com

小写改大写,已做好,完美实现了,
不用对你原来的表格做任何改动!
只需将方框区复制到任意相同表,相同区域就可以
不知道是不是这个意思,已发至你网易邮箱
第3个回答  2010-06-15
在名称管理器中创建名为jg,下面引用位置处的公式为=EVALUATE(SUBSTITUTE(Sheet1!$B4,"负","-(")&0&IF(COUNT(FIND("负",Sheet1!$A4)),")",))+RAND()*0
在A1输入非0的数字
在A2为大写, B2输入公式=IF(A$1,jg,"")

因本解法最大替换次数为12,因此可以设置:工具>选项>重新计算>“迭代计算次数”设为12

这就是大写转小写
本解法使用Excel循环引用功能,模拟VBA编程将中文大写人民币金额中的字符替换成计算式,再利用宏表4.0函数转换计算式为阿拉伯数字结果。

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网