2013-06-13 118 views

回答

4

没有内置公式在Excel中,您必须添加一个VB脚本,并永久地与您的MS保存。 Excel的安装为插件。

  1. 按Alt + F11
  2. MENU:(工具条)插入模块
  3. 复制并粘贴下面的代码


Option Explicit 

Public Numbers As Variant, Tens As Variant 

Sub SetNums() 
    Numbers = Array("", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eighteen", "Nineteen") 
    Tens = Array("", "", "Twenty", "Thirty", "Forty", "Fifty", "Sixty", "Seventy", "Eighty", "Ninety") 
End Sub 

Function WordNum(MyNumber As Double) As String 
    Dim DecimalPosition As Integer, ValNo As Variant, StrNo As String 
    Dim NumStr As String, n As Integer, Temp1 As String, Temp2 As String 
    ' This macro was written by Chris Mead - www.MeadInKent.co.uk 
    If Abs(MyNumber) > 999999999 Then 
     WordNum = "Value too large" 
     Exit Function 
    End If 
    SetNums 
    ' String representation of amount (excl decimals) 
    NumStr = Right("000000000" & Trim(Str(Int(Abs(MyNumber)))), 9) 
    ValNo = Array(0, Val(Mid(NumStr, 1, 3)), Val(Mid(NumStr, 4, 3)), Val(Mid(NumStr, 7, 3))) 
    For n = 3 To 1 Step -1 'analyse the absolute number as 3 sets of 3 digits 
     StrNo = Format(ValNo(n), "000") 
     If ValNo(n) > 0 Then 
      Temp1 = GetTens(Val(Right(StrNo, 2))) 
      If Left(StrNo, 1) <> "0" Then 
       Temp2 = Numbers(Val(Left(StrNo, 1))) & " hundred" 
       If Temp1 <> "" Then Temp2 = Temp2 & " and " 
      Else 
       Temp2 = "" 
      End If 
      If n = 3 Then 
       If Temp2 = "" And ValNo(1) + ValNo(2) > 0 Then Temp2 = "and " 
       WordNum = Trim(Temp2 & Temp1) 
      End If 
      If n = 2 Then WordNum = Trim(Temp2 & Temp1 & " thousand " & WordNum) 
      If n = 1 Then WordNum = Trim(Temp2 & Temp1 & " million " & WordNum) 
     End If 
    Next n 
    NumStr = Trim(Str(Abs(MyNumber))) 
    ' Values after the decimal place 
    DecimalPosition = InStr(NumStr, ".") 
    Numbers(0) = "Zero" 
    If DecimalPosition > 0 And DecimalPosition < Len(NumStr) Then 
     Temp1 = " point" 
     For n = DecimalPosition + 1 To Len(NumStr) 
      Temp1 = Temp1 & " " & Numbers(Val(Mid(NumStr, n, 1))) 
     Next n 
     WordNum = WordNum & Temp1 
    End If 
    If Len(WordNum) = 0 Or Left(WordNum, 2) = " p" Then 
     WordNum = "Zero" & WordNum 
    End If 
End Function 

Function GetTens(TensNum As Integer) As String 
' Converts a number from 0 to 99 into text. 
    If TensNum <= 19 Then 
     GetTens = Numbers(TensNum) 
    Else 
     Dim MyNo As String 
     MyNo = Format(TensNum, "00") 
     GetTens = Tens(Val(Left(MyNo, 1))) & " " & Numbers(Val(Right(MyNo, 1))) 
    End If 
End Function 

在此之后,从文件菜单选择Save Book,从下一菜单中选择 “Excel 97-2003加载项(* .xla)

它将另存为Excel加载项。直到女士办公室安装到该机器。

现在,在任何细胞类型=WordNum(<your numeric value or cell reference>)

,你会看到一个词等同数值的任何打开Excel文件。

的这段代码摘自:http://en.kioskea.net/forum/affich-267274-how-to-convert-number-into-text-in-excel

+1

荣誉不剥出'”这个宏写由克里斯·米德 - www.MeadInKent.co.uk'行:O) –

+1

我刚才共享片段。我不是此代码的所有者。你可以在发布的代码中看到编辑 – DareDevil

+1

这是赞美而不是批评。 –

相关问题