1、如何自定義:
打開(kāi)EXCEL,新建一個(gè)文件Book1,按ALT+F11進(jìn)入VBA編程環(huán)境,選中這個(gè)BOOK1文件,插入模塊,將下面的源代碼復(fù)制到右邊的模塊代碼區(qū)內(nèi),然后將此BOOK1保存,保存類型一定選加載宏,文件名嘛可自由發(fā)揮,我就填"中文大寫",確定OK!然后回到EXCEL,工具--加載宏-找到"中文大寫",打勾確定,我們這個(gè)自定義函數(shù)就可以象內(nèi)置函數(shù)樣使用了!--->=rmbdx(123456.78),爽吧!
2、例子:
A、直接在函數(shù)內(nèi)輸入數(shù)值的(請(qǐng)注意參數(shù)的用法,默認(rèn)用法是不用輸入)
=rmbdx(123456.78)--->壹拾貳萬(wàn)叁仟肆佰伍拾陸元柒角捌分
=rmbdx(123456.78,0)--->壹拾貳萬(wàn)叁仟肆佰伍拾陸元柒角捌分
=rmbdx(123456.78,1)--->壹拾貳萬(wàn)叁仟肆佰伍拾陸元柒角捌分
=rmbdx(56.78)--->伍拾陸元柒角捌分
=rmbdx(0.78)--->柒角捌分
=rmbdx(0.784)--->柒角捌分
=rmbdx(0.785,1)--->柒角玖分
=rmbdx(0.02,1)--->貳分
B、引用某單元格數(shù)值進(jìn)行轉(zhuǎn)換的
假設(shè)你的D3單元格的數(shù)據(jù)(也可以是求和或其它公式得出的結(jié)果)需要轉(zhuǎn)換,大寫格式放在D4單元格,則D4輸入公式:=rmbdx(d3)即可
C、其它形如=rmbdx(SUM(C4:C6))的也可以,用法象內(nèi)置函數(shù),請(qǐng)靈活使用
3、源代碼:
Function rmbdx(value, Optional m = 0)
‘中文大寫源代碼,
‘支持負(fù)數(shù),支持小數(shù)點(diǎn)后的第三位數(shù)是否進(jìn)行四舍五入處理
‘默認(rèn)參數(shù)為0,即不將小數(shù)點(diǎn)后的第三位數(shù)進(jìn)行四舍五入處理
On Error Resume Next
Dim a
Dim jf As String ‘定義角分位
Dim j ‘定義角位
Dim f ‘定義分位
If value < 0 Then ‘處理正負(fù)數(shù)的情況
a = "負(fù)"
Else
a = ""
End If
If IsNumeric(value) = False Then ‘判斷待轉(zhuǎn)換的value是否為數(shù)值
rmbdx = "需轉(zhuǎn)換的內(nèi)容非數(shù)值"
Else
value = Abs(CCur(value))
‘當(dāng)參數(shù)m不輸入(默認(rèn)為0)或?yàn)?時(shí),小數(shù)點(diǎn)后的第三數(shù)不進(jìn)行四舍五入處理
‘當(dāng)參數(shù)m為1或其它數(shù)值時(shí),小數(shù)點(diǎn)后的第三數(shù)進(jìn)行四舍五入處理
If m = 0 Then
jf = Fix((value - Fix(value)) * 100)
value = Fix(value) + jf / 100
Else ‘厘位進(jìn)行四舍五入實(shí)踐很少用到,但還是要照顧到
value = Application.WorksheetFunction.Round(value, 2) ‘-->這句是關(guān)鍵!只用round有bug
jf = Round((value - Fix(value)) * 100, 0)
End If
If value = 0 Or value = "" Then ‘當(dāng)待轉(zhuǎn)換數(shù)值為0或空時(shí),不進(jìn)行轉(zhuǎn)換
rmbdx = ""
Else
strrmbdx = Application.WorksheetFunction.Text(Int(value), "[DBNum2]") & "元" ‘轉(zhuǎn)換整數(shù)位
If Int(value) = 0 Then
strrmbdx = ""
End If
If Int(value) <> value Then
If jf > 9 Then ‘判斷小數(shù)位
j = Left(jf, 1)
f = Right(jf, 1)
Else
j = 0
f = jf
End If
If j <> 0 And f <> 0 Then ‘角分位都有時(shí)
jf = Application.WorksheetFunction.Text(j, "[DBNum2]") & "角" _
& Application.WorksheetFunction.Text(f, "[DBNum2]") & "分"
Else
‘處理出現(xiàn)零幾分的情況
If Int(value) = 0 And j = 0 And f <> 0 Then
jf = Application.WorksheetFunction.Text(f, "[DBNum2]") & "分"
Else
If j = 0 Then ‘有分無(wú)角時(shí)
jf = "零" & Application.WorksheetFunction.Text(f, "[DBNum2]") & "分"
Else
If f = 0 Then ‘有角無(wú)分時(shí)
jf = Application.WorksheetFunction.Text(j, "[DBNum2]") & "角整"
End If
End If
End If
End If
strrmbdx = strrmbdx & jf ‘組裝
Else
strrmbdx = strrmbdx & "整"
End If
rmbdx = a & strrmbdx ‘最后成型了,MM滿意了吧
End If
End If
End Function