VBA 如何将数字转换为中文大写
使用Text函数即可。
如将78转换为七十八:=Text(78,"[dbnum1]")
如将78转换为柒拾捌:=Text(78,"[dbnum2]")
数字可以为单元格引用,也就是把78改为A1形式。
哦呵呵,这个代码是数字转大写的,不能有小数
Public Function NumberToWord(ByVal Number As Double)
Dim i As Long, j As Long
Dim S_Money As String
Dim D_Location As Long
Dim AfterDot As String
Dim BeforeDot As String
Dim AllString As String
Dim Corner As Long
Dim Separately As Long
Dim T_Str As String
Dim T_Str2 As String
Dim u As String
S_Money = Trim(Str(Number))
D_Location = InStr(1, S_Money, ".")
'小数点后处理
If D_Location Then
T_Str = Right(S_Money, Len(S_Money) - D_Location)
AfterDot = "点"
For i = 1 To Len(T_Str)
AfterDot = AfterDot & NToWord(Val(Mid(T_Str, i, 1)))
Next i
S_Money = Left(S_Money, D_Location - 1)
End If
'整数部分处理
T_Str = ""
j = Len(S_Money)
For i = 1 To Len(S_Money)
T_Str = T_Str & NToWord(Val(Mid(S_Money, i, 1))) & LevelToWord(j)
j = j - 1
Next i
'“零*”筛查
For i = 1 To Len(T_Str) Step 2
If Mid(T_Str, i, 1) = "零" Then
If Mid(T_Str, i + 1, 1) = LevelToWord(5) Or Mid(T_Str, i + 1, 1) = LevelToWord(9) Then T_Str2 = T_Str2 & Mid(T_Str, i + 1, 1)
Else
T_Str2 = T_Str2 & Mid(T_Str, i, 2)
End If
Next i
'“亿万”筛查
BeforeDot = Replace(T_Str2, "亿万", "亿")
If Number = 0 Then BeforeDot = NumberToWord(0)
NumberToWord = BeforeDot & AfterDot
End Function
然后还有两个函数:
Public Function NToWord(ByVal Number As Long)
Select Case Number
Case 0
NToWord = "零"
Case 1
NToWord = "壹"
Case 2
NToWord = "贰"
Case 3
NToWord = "叁"
Case 4
NToWord = "肆"
Case 5
NToWord = "伍"
Case 6
NToWord = "陆"
Case 7
NToWord = "柒"
Case 8
NToWord = "捌"
Case 9
NToWord = "玖"
Case Else
NToWord = ""
End Select
End Function
发不下了,等补充。。。。
如将78转换为七十八:=Text(78,"[dbnum1]")
如将78转换为柒拾捌:=Text(78,"[dbnum2]")
数字可以为单元格引用,也就是把78改为A1形式。
Public Function 中文大写(数字 As Currency) As String
Dim a As Variant, b As Integer, c As Integer
Dim q(1 To 9) As String, s1 As Variant
q(1) = "壹": q(2) = "贰": q(3) = "叁": q(4) = "肆"
q(5) = "伍": q(6) = "陆": q(7) = "柒": q(8) = "捌": q(9) = "玖"
a = Int(数字)
b = Val(Mid(Str(数字), InStr(1, Str(数字), ".") + 1, 1))
c = Val(Right(Application.Text(Str(数字 * 100), "0"), 1))
s1 = Application.Text(a, "[dbnum2]")
If a = 0 Then
If b = 0 Then
If c = 0 Then
中文大写 = ""
Exit Function
Else
中文大写 = q(c) & "分"
Exit Function
End If
ElseIf c = 0 Then
中文大写 = q(b) & "角整"
Exit Function
Else
中文大写 = q(b) & "角" & q(c) & "分"
Exit Function
End If
ElseIf b = 0 Then
If c = 0 Then
中文大写 = s1 & "元整"
Exit Function
Else
中文大写 = s1 & "元零" & q(c) & "分"
Exit Function
End If
ElseIf c = 0 Then
中文大写 = s1 & "元" & q(b) & "角整"
Exit Function
Else
中文大写 = s1 & "元" & q(b) & "角" & q(c) & "分"
Exit Function
End If
End Function
楼主说的不是很具体,下面的内容请参考:
读取单元格的值,求出长度,利用循环逐个对单元格内的数字使用SELECT CASE语句 进行替换。
宏滕华素: 使用Text函数即可. 如将78转换为七十八:=Text(78,"[dbnum1]") 如将78转换为柒拾捌:=Text(78,"[dbnum2]") 数字可以为单元格引用,也就是把78改为A1形式.
龙亭区18938026839: 请教用VBA把数值转为中文大写 - ?
宏滕华素: 哦呵呵,这个代码是数字转大写的,不能有小数 Public Function NumberToWord(ByVal Number As Double)Dim i As Long, j As LongDim S_Money As StringDim D_Location As LongDim AfterDot As StringDim BeforeDot As StringDim ...
龙亭区18938026839: VBA 如何将数字转换为中文大写?
宏滕华素:MsgBox Application.Text([a1], "[DBNum1]") MsgBox Application.Text([a1], "[DBNum2]") 自己挑吧
龙亭区18938026839: 在word里面怎么实现把小写数字转换成中文大写? - ?
宏滕华素: 举个例子来说:楼主想要把 123456 变成 壹拾贰万参仟肆佰伍拾陆 还是 壹拾贰万叁仟肆佰伍拾陆 或者一十二万三千四百五十六 这样“有单位”的形式,还是变成 壹贰参肆伍陆 这样没有单位的形式? 有单位的形式,使用插入-编号 更改即可(里面有各种选择). ---------------- 输入完后就显示大写?自动更正选项试试看合适么?自动更正不能显示“单位” 如果有小数位的,还是建议在excel里面处理.单元格设置为 特殊(中文大写数字)格式后,“输入完数字后就自动转换成大写”
龙亭区18938026839: 用VBA语言做出下面一题 2:银行输入数字后,能够以大写汉字表示出来 如,输入234 显示壹仟贰佰叁拾肆元 - ?
宏滕华素:[答案] 使用公式即可实现,如将A2中数字转为金额显示在B2中,则公式如下: B2=IF(ROUND(A2,2)
龙亭区18938026839: excel中人民币小写转大写的函数怎么写? - ?
宏滕华素: 我给你一个方法将此复制下来粘贴到Excel单元格内就可以了. =IF(ROUND(A5,2)<0,"无效数值","人民币"&IF(ROUND(A5,2)=0,"零元",IF(ROUND(A5,2)<1,"",TEXT(INT(ROUND(A5,2)),"[dbnum2]")&"元")&IF(INT(ROUND...
龙亭区18938026839: 怎么把excel中小写数字转换为大写 - ?
宏滕华素: 本人在Excel会计工作实践中,设计了一个数字小写金额转换汉字大写金额的公式,公式仅500多个字符,个人感觉还很满意,现拿出来供大家分享,不足之处,也请大家不吝赐教.公式如下:=IF(ROUND(A1,2)=0,"",IF(A1<0,"负","")&...
龙亭区18938026839: word中输入小写金额怎么直接变成中文汉字 - ?
宏滕华素: Word中能把数字转换成中文大写金额,方法是:输入数字(例如56789),然后选择该数字,单击菜单“插入”→“数字”,在弹出的对话框中,选择“数字类型”下的“壹、贰、叁……”,单击“确定”,数字56789就变成了“伍万陆仟柒佰捌拾玖”.
龙亭区18938026839: excel中怎么将表示金额的阿拉伯数字转换成中文大写 - ?
宏滕华素: 假设数字在A1单元格,目标单元格公式:=SUBSTITUTE(SUBSTITUTE(IF(ISNUMBER(FIND(".",A1)),TEXT(LEFT(A1,FIND(".",A1)-1),"[dbnum2]"...
龙亭区18938026839: 在office中怎么使用VBA将一串数字翻译成中文.比如将9720变成九千七百二十 - ?
宏滕华素: 不需要VBA,右键点选格子,选属性,在文字格式里的最下一条,自定义,好像是这样,希望对你有帮助