Note: The other languages of the website are Google-translated. Back to English

如何在Excel中快速将数字转换为英文单词?

如果您在工作表中有一列数字值,现在需要将它们设置为等效的英语单词或英语货币单词,如下面的屏幕截图所示。 在这里,我将讨论如何快速,轻松地将数字更改为英语单词。

使用用户定义的功能将数字转换为英文单词

使用用户定义的功能将数字转换为货币词

使用有用的功能将数字转换为货币单词


使用用户定义的功能将数字转换为英文单词

没有任何功能或公式可以帮助您直接在Excel中解决此任务,但是您可以创建一个用户定义函数来完成该任务。 请执行以下步骤:

1. 按住 ALT + F11 键,然后打开 Microsoft Visual Basic应用程序窗口.

2。 点击 插页 > 模块,然后将以下代码粘贴到 模块窗口.

Function NumberstoWords(ByVal MyNumber)
'Update by Extendoffice
Dim xStr As String
Dim xFNum As Integer
Dim xStrPoint
Dim xStrNumber
Dim xPoint As String
Dim xNumber As String
Dim xP() As Variant
Dim xDP
Dim xCnt As Integer
Dim xResult, xT As String
Dim xLen As Integer
On Error Resume Next
xP = Array("", "Thousand ", "Million ", "Billion ", "Trillion ", " ", " ", " ", " ")
xNumber = Trim(Str(MyNumber))
xDP = InStr(xNumber, ".")
xPoint = ""
xStrNumber = ""
If xDP > 0 Then
xPoint = " point "
xStr = Mid(xNumber, xDP + 1)
xStrPoint = Left(xStr, Len(xNumber) - xDP)
For xFNum = 1 To Len(xStrPoint)
xStr = Mid(xStrPoint, xFNum, 1)
xPoint = xPoint & GetDigits(xStr) & " "
Next xFNum
xNumber = Trim(Left(xNumber, xDP - 1))
End If
xCnt = 0
xResult = ""
xT = ""
xLen = 0
xLen = Int(Len(Str(xNumber)) / 3)
If (Len(Str(xNumber)) Mod 3) = 0 Then xLen = xLen - 1
Do While xNumber <> ""
If xLen = xCnt Then
xT = GetHundredsDigits(Right(xNumber, 3), False)
Else
If xCnt = 0 Then
xT = GetHundredsDigits(Right(xNumber, 3), True)
Else
xT = GetHundredsDigits(Right(xNumber, 3), False)
End If
End If
If xT <> "" Then
xResult = xT & xP(xCnt) & xResult
End If
If Len(xNumber) > 3 Then
xNumber = Left(xNumber, Len(xNumber) - 3)
Else
xNumber = ""
End If
xCnt = xCnt + 1
Loop
xResult = xResult & xPoint
NumberstoWords = xResult
End Function
Function GetHundredsDigits(xHDgt, xB As Boolean)
Dim xRStr As String
Dim xStrNum As String
Dim xStr As String
Dim xI As Integer
Dim xBB As Boolean
xStrNum = xHDgt
xRStr = ""
On Error Resume Next
xBB = True
If Val(xStrNum) = 0 Then Exit Function
xStrNum = Right("000" & xStrNum, 3)
xStr = Mid(xStrNum, 1, 1)
If xStr <> "0" Then
xRStr = GetDigits(Mid(xStrNum, 1, 1)) & "Hundred "
Else
If xB Then
xRStr = "and "
xBB = False
Else
xRStr = " "
xBB = False
End If
End If
If Mid(xStrNum, 2, 2) <> "00" Then
xRStr = xRStr & GetTenDigits(Mid(xStrNum, 2, 2), xBB)
End If
GetHundredsDigits = xRStr
End Function
Function GetTenDigits(xTDgt, xB As Boolean)
Dim xStr As String
Dim xI As Integer
Dim xArr_1() As Variant
Dim xArr_2() As Variant
Dim xT As Boolean
xArr_1 = Array("Ten ", "Eleven ", "Twelve ", "Thirteen ", "Fourteen ", "Fifteen ", "Sixteen ", "Seventeen ", "Eighteen ", "Nineteen ")
xArr_2 = Array("", "", "Twenty ", "Thirty ", "Forty ", "Fifty ", "Sixty ", "Seventy ", "Eighty ", "Ninety ")
xStr = ""
xT = True
On Error Resume Next
If Val(Left(xTDgt, 1)) = 1 Then
xI = Val(Right(xTDgt, 1))
If xB Then xStr = "and "
xStr = xStr & xArr_1(xI)
Else
xI = Val(Left(xTDgt, 1))
If Val(Left(xTDgt, 1)) > 1 Then
If xB Then xStr = "and "
xStr = xStr & xArr_2(Val(Left(xTDgt, 1)))
xT = False
End If
If xStr = "" Then
If xB Then
xStr = "and "
End If
End If
If Right(xTDgt, 1) <> "0" Then
xStr = xStr & GetDigits(Right(xTDgt, 1))
End If
End If
GetTenDigits = xStr
End Function
Function GetDigits(xDgt)
Dim xStr As String
Dim xArr_1() As Variant
xArr_1 = Array("Zero ", "One ", "Two ", "Three ", "Four ", "Five ", "Six ", "Seven ", "Eight ", "Nine ")
xStr = ""
On Error Resume Next
xStr = xArr_1(Val(xDgt))
GetDigits = xStr
End Function

3。 保存并关闭此代码,然后返回工作表,在空白单元格中输入此公式 = NumberstoWords(A2)( A2 是您要将数字转换为英文单词的单元格),请参见屏幕截图:

4。 然后按 输入 键,然后选择单元格C2,然后将填充手柄拖动到要包含此公式的范围。 所有数字值均已转换为其相应的英语单词。

备注:此代码仅适用于整数,但不适用于十进制数字。


使用用户定义的功能将数字转换为货币词

如果要将数字转换为英语货币单词,则应应用下面的VBA代码。

1. 按住 ALT + F11 键,然后打开 Microsoft Visual Basic应用程序窗口.

2。 点击 插页 > 模块,然后将以下代码粘贴到 模块窗口.

Function SpellNumberToEnglish(ByVal pNumber)
'Update by Extendoffice
Dim Dollars, Cents
arr = Array("", "", " Thousand ", " Million ", " Billion ", " Trillion ")
pNumber = Trim(Str(pNumber))
xDecimal = InStr(pNumber, ".")
If xDecimal > 0 Then
    Cents = GetTens(Left(Mid(pNumber, xDecimal + 1) & "00", 2))
    pNumber = Trim(Left(pNumber, xDecimal - 1))
End If
xIndex = 1
Do While pNumber <> ""
    xHundred = ""
    xValue = Right(pNumber, 3)
    If Val(xValue) <> 0 Then
        xValue = Right("000" & xValue, 3)
        If Mid(xValue, 1, 1) <> "0" Then
            xHundred = GetDigit(Mid(xValue, 1, 1)) & " Hundred "
        End If
        If Mid(xValue, 2, 1) <> "0" Then
            xHundred = xHundred & GetTens(Mid(xValue, 2))
        Else
            xHundred = xHundred & GetDigit(Mid(xValue, 3))
        End If
    End If
    If xHundred <> "" Then
        Dollars = xHundred & arr(xIndex) & Dollars
    End If
    If Len(pNumber) > 3 Then
        pNumber = Left(pNumber, Len(pNumber) - 3)
    Else
        pNumber = ""
    End If
    xIndex = xIndex + 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
SpellNumberToEnglish = Dollars & Cents
End Function
Function GetTens(pTens)
Dim Result As String
Result = ""
If Val(Left(pTens, 1)) = 1 Then
    Select Case Val(pTens)
        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
Select Case Val(Left(pTens, 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(pTens, 1))
End If
GetTens = Result
End Function
Function GetDigit(pDigit)
Select Case Val(pDigit)
    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

3。 保存此代码并返回工作表,在空白单元格中输入此公式 = SpellNumberToEnglish(A2)( A2 是您要将数字转换为英语货币单词的单元格),然后将填充手柄向下拖动到要应用此公式的单元格,所有数字均已拼写为英语货币单词,请参见屏幕截图:


使用有用的功能将数字转换为货币单词

上面的代码对于Excel初学者来说有些麻烦,在这里,我将介绍一个有用的功能, Kutools for Excel's 数字到单词,使用此实用程序,您可以快速将数字拼写为英文单词或货币单词。

提示:申请这个 数字到单词 功能,首先,您应该下载 Kutools for Excel,然后快速轻松地应用该功能。

安装后 Kutools for Excel,请这样做:

1。 选择要转换的数字列表,然后单击 库工具 > 内容 > 数字到单词,请参见屏幕截图:

2。 在 数字到货币单词 对话框,检查 英语 选项从 语言 列表框,然后单击 Ok 按钮,您将看到所有数字都已拼写成英语货币单词:

小贴士:如果要获取英语单词,请检查 不转换为货币 复选框 附加选项 部分,请参见屏幕截图:

点击下载Kutools for Excel并立即免费试用!


最佳办公效率工具

Kutools for Excel解决了您的大多数问题,并使您的生产率提高了80%

  • 重用: 快速插入 复杂的公式,图表 以及您以前使用过的任何东西; 加密单元 带密码 创建邮件列表 并发送电子邮件...
  • 超级公式栏 (轻松编辑多行文本和公式); 阅读版式 (轻松读取和编辑大量单元格); 粘贴到过滤范围...
  • 合并单元格/行/列 不会丢失数据; 拆分单元格内容; 合并重复的行/列...防止细胞重复; 比较范围...
  • 选择重复或唯一 行; 选择空白行 (所有单元格都是空的); 超级查找和模糊查找 在许多工作簿中; 随机选择...
  • 确切的副本 多个单元格,无需更改公式参考; 自动创建参考 到多张纸; 插入项目符号,复选框等...
  • 提取文字,添加文本,按位置删除, 删除空间; 创建和打印分页小计; 在单元格内容和注释之间转换...
  • 超级滤镜 (将过滤方案保存并应用于其他工作表); 高级排序 按月/周/日,频率及更多; 特殊过滤器 用粗体,斜体...
  • 结合工作簿和工作表; 根据关键列合并表; 将数据分割成多个工作表; 批量转换xls,xlsx和PDF...
  • 超过300种强大功能. 支持 Office / Excel 2007-2021 和 365。支持所有语言。 在您的企业或组织中轻松部署。 完整功能 30 天免费试用。 60 天退款保证。
kte选项卡201905

Office选项卡为Office带来了选项卡式界面,使您的工作更加轻松

  • 在Word,Excel,PowerPoint中启用选项卡式编辑和阅读,发布者,Access,Visio和Project。
  • 在同一窗口的新选项卡中而不是在新窗口中打开并创建多个文档。
  • 每天将您的工作效率提高50%,并减少数百次鼠标单击!
officetab底部
按评论排序
注释 (62)
还没有评分。 成为第一位评论!
该评论由网站上的主持人最小化
早上好嗨..早上好..很高兴认识你。
该评论由网站上的主持人最小化
此代码不起作用
该评论由网站上的主持人最小化
先生,我怎样才能将数字转换为最后一个单词“Only”的单词?
该评论由网站上的主持人最小化
问题解决?????
该评论由网站上的主持人最小化
您必须在其他列中再添加一个公式
="卢比"&""&F6&"仅"&"。"
该评论由网站上的主持人最小化
如果数字有一个 (.) 像 150.75 或 3.35 怎么样? 请帮忙谢谢...
该评论由网站上的主持人最小化
感谢您对创建公式的支持。 您能否告诉我们是否需要添加货币名称……例如沙特里亚尔或英镑。
该评论由网站上的主持人最小化
例如,我们将 4000 转换为单词“四千”,我想将其翻译为“仅限沙特里亚尔四千”,因此公式中缺少“沙特里亚尔 & Only”
请帮忙
该评论由网站上的主持人最小化
上述模块中的公式重复并从微软网站复制..

请查看原始链接并关注 Microsoft Update..

https://support.microsoft.com/en-in/help/213360/how-to-convert-a-numeric-value-into-english-words-in-excel
该评论由网站上的主持人最小化
亲爱的,这段代码在这一行显示语法错误
Cents = GetTens(Left(Mid(MyNumber, DecimalPlace + 1) &_"00", 2))

你能帮我..??尽快回复我
该评论由网站上的主持人最小化
添加单词和单词之间。 十四万五百二十六而不是十四万五百二十六。 该句子可能由于其不正确的英语而无法很好地理解。
该评论由网站上的主持人最小化
此代码无法正常工作...如果我们关闭并打开工作表,则无法正常工作
该评论由网站上的主持人最小化
将文件另存为“启用宏的工作簿”并在打开时启用宏
该评论由网站上的主持人最小化
谢谢你的很多代码
该评论由网站上的主持人最小化
比如我们把 2500 转换成“XNUMX”这个词,我想翻译成“XNUMX Only”所以公式中缺少“Only”
请帮忙
该评论由网站上的主持人最小化
使用 =CONCATENATE(NumberstoWords(A1)," Only")
该评论由网站上的主持人最小化
真的谢谢亲爱的,你的配方很完美,很好,真主保佑你。
的问候。
该评论由网站上的主持人最小化
数亿美元不在公式中。 请帮助我。
该评论由网站上的主持人最小化
例如我们将 2500 转换成单词“XNUMX”,我想把它翻译成“XNUMX & Cents XNUMX Only”所以请你帮忙
该评论由网站上的主持人最小化
我没有把美分拼出来……我的金额是 123.50,得到“一百二十三”……复制了所有公式,请帮忙
该评论由网站上的主持人最小化
十万和千万呢
该评论由网站上的主持人最小化
多谢
该评论由网站上的主持人最小化
美好的。 但很抱歉,这个公式不能永久有效......我关闭了午休的工作簿。 午餐后我打开了文件,但公式不起作用。 显示 #NAME? 之类的错误。 请提供贴心的解决方案。
该评论由网站上的主持人最小化
谢谢


它的工作! :)
该评论由网站上的主持人最小化
当我的金额为“618475”时出现错误,它显示“XNUMX”而不是“XNUMX”。
该评论由网站上的主持人最小化
我也有同样的问题
该评论由网站上的主持人最小化
这不是问题,它是一种用文字书写的格式
该评论由网站上的主持人最小化
谢谢 extendOfficea
这里还没有评论
加载更多
留下你的意见
以访客身份发帖
×
评价此帖子:
0   产品特性
建议地点

关注我们

版权所有 © 2009 - extendoffice.com。 | 版权所有。 供电 ExtendOffice。 | 网站地图
Microsoft和Office徽标是Microsoft Corporation在美国和/或其他国家的商标或注册商标。
受Sectigo SSL保护