Excel 没有在工作表中将数字显示为英语单词的默认函数,但您可以通过将以下 SpellNumber 函数代码粘贴到 VBA (Visual Basic for Applications) 模块来添加此功能。 此函数允许你使用公式将美元和分值转换为单词,因此 22.50 将读Twenty-Two美元和五十分。 如果使用 Excel 作为打印检查的模板,这非常有用。

如果要将数字值转换为文本格式而不将其显示为单词,请改为使用 TEXT 函数。

注意: Microsoft 仅提供用于演示的编程示例,而不提供明示或默示的担保。 这包括但不限于对特定用途的可商家性或适用性的默示保证。 本文假定你熟悉 VBA 编程语言以及用于创建和调试过程的工具。 Microsoft 支持工程师可以帮助解释特定过程的功能。 但是,它们不会修改这些示例以提供附加功能,或构造符合特定要求的过程。

创建 SpellNumber 函数,将数字转换为单词

  1. 使用键盘快捷方式 Alt + F11 打开 Visual Basic 编辑器 (VBE) 。

    注意: 还可在功能区 Visual Basic"开发工具"选项卡来访问 编辑器。

  2. 单击"插入"选项卡,并单击"模块"。

    在插入菜单上,单击模块。
  3. 复制以下代码行。

    注意: 此代码称为 UDF (函数) ,可自动执行在整个工作表中将数字转换为文本的任务。

    Option Explicit
    
    'Main Function
    
    Function SpellNumber(ByVal MyNumber)
    
    Dim Dollars, Cents, Temp
    
    Dim DecimalPlace, Count
    
    ReDim Place(9) As String
    
    Place(2) = " Thousand "
    
    Place(3) = " Million "
    
    Place(4) = " Billion "
    
    Place(5) = " Trillion "
    
    ' String representation of amount.
    
    MyNumber = Trim(Str(MyNumber))
    
    ' Position of decimal place 0 if none.
    
    DecimalPlace = InStr(MyNumber, ".")
    
    ' Convert cents and set MyNumber to dollar amount.
    
    If DecimalPlace > 0 Then
    
    Cents = GetTens(Left(Mid(MyNumber, DecimalPlace + 1) & _ "00", 2))
    
    MyNumber = Trim(Left(MyNumber, DecimalPlace - 1))
    
    End If
    
    Count = 1
    
    Do While MyNumber <> ""
    
    Temp = GetHundreds(Right(MyNumber, 3))
    
    If Temp <> "" Then Dollars = Temp & Place(Count) & Dollars
    
    If Len(MyNumber) > 3 Then
    
    MyNumber = Left(MyNumber, Len(MyNumber) - 3)
    
    Else
    
    MyNumber = ""
    
    End If
    
    Count = Count + 1
    
    Loop
    
    Select Case Dollars
    
    Case ""
    
    Dollars = "No Dollars"
    
    Case "One"
    
    Dollars = "One Dollar"
    
    Case Else
    
    Dollars = Dollars & " Dollars"
    
    End Select
    
    Select Case Cents
    
    Case ""
    
    Cents = " and No Cents"
    
    Case "One"
    
    Cents = " and One Cent"
    
    Case Else
    
    Cents = " and " & Cents & " Cents"
    
    End Select
    
    SpellNumber = Dollars & Cents
    
    End Function
    
    
    ' Converts a number from 100-999 into text
    
    Function GetHundreds(ByVal MyNumber)
    
    Dim Result As String
    
    If Val(MyNumber) = 0 Then Exit Function
    
    MyNumber = Right("000" & MyNumber, 3)
    
    ' Convert the hundreds place.
    
    If Mid(MyNumber, 1, 1) <> "0" Then
    
    Result = GetDigit(Mid(MyNumber, 1, 1)) & " Hundred "
    
    End If
    
    ' Convert the tens and ones place.
    
    If Mid(MyNumber, 2, 1) <> "0" Then
    
    Result = Result & GetTens(Mid(MyNumber, 2))
    
    Else
    
    Result = Result & GetDigit(Mid(MyNumber, 3))
    
    End If
    
    GetHundreds = Result
    
    End Function
    
    
    ' Converts a number from 10 to 99 into text.
    
    
    Function GetTens(TensText)
    
    Dim Result As String
    
    Result = "" ' Null out the temporary function value.
    
    If Val(Left(TensText, 1)) = 1 Then ' If value between 10-19...
    
    Select Case Val(TensText)
    
    Case 10: Result = "Ten"
    
    Case 11: Result = "Eleven"
    
    Case 12: Result = "Twelve"
    
    Case 13: Result = "Thirteen"
    
    Case 14: Result = "Fourteen"
    
    Case 15: Result = "Fifteen"
    
    Case 16: Result = "Sixteen"
    
    Case 17: Result = "Seventeen"
    
    Case 18: Result = "Eighteen"
    
    Case 19: Result = "Nineteen"
    
    Case Else
    
    End Select
    
    Else ' If value between 20-99...
    
    Select Case Val(Left(TensText, 1))
    
    Case 2: Result = "Twenty "
    
    Case 3: Result = "Thirty "
    
    Case 4: Result = "Forty "
    
    Case 5: Result = "Fifty "
    
    Case 6: Result = "Sixty "
    
    Case 7: Result = "Seventy "
    
    Case 8: Result = "Eighty "
    
    Case 9: Result = "Ninety "
    
    Case Else
    
    End Select
    
    Result = Result & GetDigit _
    
    (Right(TensText, 1)) ' Retrieve ones place.
    
    End If
    
    GetTens = Result
    
    End Function
    
    
    ' Converts a number from 1 to 9 into text.
    
    Function GetDigit(Digit)
    
    Select Case Val(Digit)
    
    Case 1: GetDigit = "One"
    
    Case 2: GetDigit = "Two"
    
    Case 3: GetDigit = "Three"
    
    Case 4: GetDigit = "Four"
    
    Case 5: GetDigit = "Five"
    
    Case 6: GetDigit = "Six"
    
    Case 7: GetDigit = "Seven"
    
    Case 8: GetDigit = "Eight"
    
    Case 9: GetDigit = "Nine"
    
    Case Else: GetDigit = ""
    
    End Select
    
    End Function
  4. 将代码行粘贴到 Module1 (代码) 框中。

    粘贴到 Module1 中的代码 (代码) 框。
  5. Alt+Q 返回到 Excel。 SpellNumber 函数现在可供使用。

    注意: 此函数仅适用于当前工作簿。 若要在另一个工作簿中使用此函数,必须重复这些步骤以复制并粘贴该工作簿中的代码。

返回页首

在单个单元格中使用 SpellNumber 函数

  1. 将公式 =SpellNumber (A1) 键入到要显示书面数字的单元格中,其中 A1 是包含要转换的数的单元格。 还可以手动键入值,例如 =SpellNumber (22.50) 。

  2. Enter 确认公式。

返回页首

保存 SpellNumber 函数工作簿

Excel 无法将具有宏函数的工作簿保存为标准无宏工作簿格式 (.xlsx) 。 如果单击"文件">保存。 随即 VB项目 对话框。 单击"否"。

在 VB 项目对话框中,单击否。

您可以将文件另存为 Excel Macro-Enabled 工作簿 (.xlsm) 文件保持其当前格式。

  1. 单击“文件”>“另存为”。

  2. 单击" 另存为 类型"下拉菜单,然后选择 Excel Macro-Enabled工作簿

  3. 单击“保存”。

返回页首

TEXT 函数

Need more help?

Expand your skills
Explore Training
Get new features first
Join Microsoft Office Insiders

Was this information helpful?

How satisfied are you with the translation quality?
What affected your experience?

Thank you for your feedback!

×