
Function ldyDX(M)'205個字符
ldyDX = IIf(M > -0.005, "", "負") & IIf(Abs(M) < 0.005, "", Replace(Replace(Replace(Join(Application.Text(Split(Format(Abs(M), "0.00"), "."), Split("[DBNum2] [DBNum2]0角0分")), "元"), "零分", "整"), "零角", ""), "零元", ""))
End Function
居然還可以短一點 200個字符
Function DX(M)'200個字符
DX = IIf(Abs(M) < 0.005, "", Replace(Replace(Replace(Join(Application.Text(Split(Format(M, " 0. 00")), Split("@ [DBNum2];;0 [>9][dbnum2]圓0角0分;[=0]圓整;[dbnum2]圓零0分")), ""), "零分", "整"), "0圓零", ""), "0圓", ""))
End Function
核心語句2 Join(Application.Text(Split(Format(M, " 0. 00")), Split("@ [DBNum2];;0 [>9][dbnum2]圓0角0分;[=0]圓整;[dbnum2]圓零0分")), "")
再細分一些居然又減少6個字符突破200了 08-7-23
突然想到用 a 代替 “”再少4個 刀砍斧剁 再減5個 不知到是否還能減
Function DX(M)'185個字符
DX = IIf(Abs(M) < 0.005, a, Replace(Replace(Replace(Join(Application.Text(Split(Format(M, " 0. 0 0")), Split(" [DBnum2] [DBnum2]圓0角;;圓零 [DBnum2]0分;;整")), a), "零圓零", a), "零圓", a), "零整", "整"))
End Function
核心語句3 Join(Application.Text(Split(Format(M, " 0. 0 0")), Split("@ [DBNum2] [=]圓零;[dbnum2]圓0角 [=]整;[dbnum2]0分")), "")
-捌角貳分 -0.82
-貳分 -0.015
-壹佰圓零貳分 -100.02
壹萬圓零貳分 10000.02
貳角整 0.2
壹圓整 0.995
惡補函數的副產品,純粹的腦力體操。TEXT有如此多秒用!嘆服
核心語句 Join(Application.Text(Split(Format(Abs(M), "0.00"), "."), Split("[DBNum2] [DBNum2]0角0分")), "元")
已經完成 X元X角X分 的轉換 其他 iif replace 都是對細節的補充。
兩年前我寫的7 行,又有 gly1126 寫的3行,到現在的1 行。歡迎測試挑錯
呵呵
附一個 抄自 EXCEL吧 的公式 191字符
=SUBSTITUTE(SUBSTITUTE(TEXT(TRUNC(FIXED(A1)),"[dbnum2]G/通用格式元;負[dbnum2]G/通用格式元;"&IF(A1>-0.5%,,"負"))&TEXT(RIGHT(FIXED(A1),2),"[dbnum2]0角0分;;"&IF(ABS(A1)>1%,"整",)),"零角",IF(ABS(A1)<1,,"零")),"零分","整")