返回列表 上一主題 發帖

如何將數字180.30改成國字壹捌零點參零

=SUBSTITUTE(TEXT(A1,"[DBNum2]0.00;;"),".","點")
ML089 發表於 2013-12-10 19:55

不錯的 Idea!
順便恭賀你升任版主。

TOP

回復 1# sasah168
除了以公式 (ML089 版大提示) 處理外,尚可以使用 VBA 模組的方式來處理,如圖:

TOP

我只知道將數字180.30改成壹佰捌拾.參
但要如何將數字180.80改成國字壹捌零點參零
請大大幫忙 :di ...
sasah168 發表於 2013-12-10 11:45

置於 "模組 -> Module1" 內:
  1. Sub Ex()
  2.     Dim strs As String, num As Double
  3.    
  4.     num = 15673624.89
  5.     strs = NumToCur(num)
  6.     MsgBox num & Chr(10) & strs & Chr(10) & NumToCur(180.3)
  7. End Sub

  8. Function NumToCur(ByVal num) As String
  9.     Const cNum As String = "零壹貳參肆伍陸柒捌玖-            點  "
  10.     Dim sNum As String
  11.     Dim i As Long
  12.    
  13.     If (num <> 0) And (Abs(num) < 10000000000000#) Then
  14.         sNum = Trim(Str(Int(Abs(num) * 100)))
  15.         For i = 1 To Len(sNum)                ' 逐位轉換
  16.             NumToCur = NumToCur + Mid(cNum, (Mid(sNum, i, 1)) + 1, 1) + Mid(cNum, 26 - Len(sNum) + i, 1)
  17.             '  NumToCur = NumToCur + Mid(cNum, (Mid(sNum, i, 1)) + 1, 1)
  18.         Next
  19.         NumToCur = Replace(NumToCur, " ", "")
  20.         If num < 0 Then NumToCur = "(負)" + NumToCur
  21.     Else
  22.         NumToCur = IIf(num = 0, "零值", "溢出")
  23.     End If
  24. End Function
複製代碼

TOP

回復 13# ML089
我那 NumToCur() 是由以下的 NumToCurr() 修改而成,
所以格局仍保留原程式風格:
  1. ' -----------------------------------------------------------------------------
  2. ' 幣值文數字轉換
  3. ' 引值 (num): 雙精準 (Double) 數值 num as Currency
  4. ' -----------------------------------------------------------------------------
  5. Function NumToCurr(ByVal num) As String
  6.     Const cNum As String = "零壹貳參肆伍陸柒捌玖-萬仟佰拾億仟佰拾萬仟佰拾元角分"
  7.     Const cCha As String = "零仟零佰零拾零零零零零億零萬零元億萬零角零分零整-零零零零零億萬元億零整整"
  8.     Dim sNum As String
  9.     Dim i As Long
  10.    
  11.     If (num <> 0) And (Abs(num) < 10000000000000#) Then       '  (Abs(num) < 10000000000000#) = True
  12.         sNum = Trim(Str(Int(Abs(num) * 100)))
  13.         For i = 1 To Len(sNum)                ' 逐位轉換
  14.             NumToCurr = NumToCurr + Mid(cNum, (Mid(sNum, i, 1)) + 1, 1) + Mid(cNum, 26 - Len(sNum) + i, 1)
  15.         Next
  16.         For i = 0 To 11                       ' 去掉多餘的零
  17.             NumToCurr = Replace(NumToCurr, Mid(cCha, i * 2 + 1, 2), Mid(cCha, i + 26, 1))
  18.         Next
  19.         If num < 0 Then NumToCurr = "(負)" + NumToCurr
  20.     Else
  21.         NumToCurr = IIf(num = 0, "零元", "溢出")
  22.     End If
  23. End Function
複製代碼
可能這隻程式碼對你會較實用。

TOP

        靜思自在 : 為人處世要小心細心,但不要「小心眼」。
返回列表 上一主題