在 Excel 中将数字转换为文字——全面指南
将数字转换为文字形式常用于财务报告、法律文件、发票或支票。尽管 Excel 开箱即用并不提供此功能,但您可通过多种可靠方式实现——包括 Microsoft 365 内置函数、VBA 自定义函数以及功能强大的第三方加载项。本全面指南将逐一详解每种方法,清晰阐明其优势与局限,助您根据实际需求精准选择最佳方案。

在 Excel 中转换小写金额转大写的方法
本节为您介绍三种在 Excel 中将货币小写金额转换为大写的有效方法,请根据您的 Excel 版本和使用场景选择最适合的方案。
方法 1:使用新增的内置函数(仅限 Microsoft 365)
如果您使用的是 Microsoft 365 专属 Excel,即可借助全新的 TRANSLATE 函数,通过巧妙的公式组合,轻松将小写货币金额转换为大写文字。
如下图所示,要将 A2:A5 区域中的货币金额转换为对应的文字表述,可使用以下公式轻松实现。

- 选择一个空白单元格(例如 B2),输入以下公式:=PROPER(SUBSTITUTE(SUBSTITUTE(LOWER(TRANSLATE(BAHTTEXT(B9),"th","en")),"baht","dollars"),"satang","cents"))
- 按下“Enter”键,然后向下拖动“填充柄”,即可将操作应用到其他行。

公式工作原理:
- BAHTTEXT:将数字转换为泰铢大写金额(例如“หนึ่งบาทถ้วน”)。
- TRANSLATE(。。。,“th“,“en“):将文本从一种语言翻译为另一种语言(需 Microsoft 365 支持),此处将泰语译为英语。
- LOWER():将整个字符串转换为小写,确保格式统一。
- SUBSTITUTE():将“baht”和“satang”等货币术语替换为您所需的用词。
- PROPER():将每个单词的首字母大写,实现规范格式。
适配其他货币:
上述公式输出结果为美元。您可通过替换主单位和辅单位,轻松自定义其他货币:
- 将“dollars”替换为目标货币的主单位,例如英镑的“pounds”。
- 将“cents”替换为相应的辅单位,例如英镑的“pence”。
下表列出了支持的货币及对应的可用公式:
| 货币 | 主单位替换 | 辅单位替换 | 示例公式(假设数值在 A2 单元格中) |
|---|---|---|---|
| USD | 美元 | 美分 | =PROPER(SUBSTITUTE(SUBSTITUTE(LOWER(TRANSLATE(BAHTTEXT(A2),"th","en")),"baht","dollars"),"satang","cents")) |
| GBP | 英镑 | 便士 | =PROPER(SUBSTITUTE(SUBSTITUTE(LOWER(TRANSLATE(BAHTTEXT(A2),"th","en")),"baht","pounds"),"satang","pence")) |
| EUR | 欧元 | 美分 | =PROPER(SUBSTITUTE(SUBSTITUTE(LOWER(TRANSLATE(BAHTTEXT(A2),"th","en")),"baht","euros"),"satang","cents")) |
| MYR | 林吉特 | 仙 | =PROPER(SUBSTITUTE(SUBSTITUTE(LOWER(TRANSLATE(BAHTTEXT(A2),"th","en")),"baht","ringgit"),"satang","sen")) |
此方法的局限性:
- 仅适用于 Microsoft 365 专属 Excel(因使用了 TRANSLATE() 函数)。
- 输出结果高度依赖于 BAHTTEXT() 格式的准确性。
- 此方法适用于同时包含主单位和辅单位的货币(例如泰铢,或美元与美分),不建议用于结构不同的货币。
方法 2:使用 VBA 用户自定义函数
本节将介绍如何使用基于 VBA 的用户自定义函数(UDF),将数值转换为英文货币文字——默认专为美元(USD)量身打造。
步骤 1:插入 VBA 代码
- 打开您要使用此功能的工作表。
- 按下“Alt”+“F11”,即可打开“Microsoft Visual Basic for Applications”窗口。
- 在编辑器中,单击“插入”>“模块”,然后粘贴以下 VBA 代码。
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
- 按下 Alt+Q 即可返回工作表。
步骤 2:应用函数
- 在单元格中输入以下公式,然后按“Enter”键:=SpellNumberToEnglish(A2)
- 然后拖动填充柄,将其应用到其他行(按需操作)。您的数字现在将以文字形式显示,例如:

适配其他货币:
该函数输出“Dollar(s)”和“Cent(s)”,这些单位已为 USD 硬编码。若要将数字转换为其他货币(例如“英镑”),请手动修改以下代码行中的主单位和辅单位。

将工作簿保存为启用宏的文件
默认情况下,除非将工作簿保存为启用宏的工作簿,否则 VBA 函数将不会保留:
- 按下“Ctrl”+“S”即可保存。
- 并在关于宏的弹出消息中选择“返回”按钮。注意:如果弹出窗口仅显示“是”、“否”和“帮助”,请单击“否”。

- 在“另存为”窗口中。
- 选择保存位置。
- 在“指定保存格式”下拉列表中选择“Excel 启用宏的工作簿(*.xlsm)”。
- 单击“保存”按钮。

SpellNumberToEnglish VBA 函数的局限性
- 此函数仅输出英文结果。
- 它不支持其他语言(如法语、德语),也无法处理货币单位位于数字之前的格式(例如印度英语中的“Rupees One Hundred”)。
- 如果您未将工作簿保存为启用宏的工作簿(.xlsm),关闭 Excel 时该函数将会丢失。
- 若保存为普通的 .xlsx 文件,所有 VBA 代码将被自动移除。
- 当您将启用宏的文件发送给他人时,对方打开文件会触发“安全警告 – 宏已被禁用”提示。
- 部分用户可能因担忧潜在的安全风险而犹豫是否启用宏,甚至可能放弃使用该文件。
- 任何对货币术语或格式的修改,均需手动编辑 VBA 代码。
- 不适合不熟悉宏或脚本的用户。
方法 3:使用 Kutools for Excel(无需公式或 VBA)
如果您已安装“Kutools for Excel”,即可使用其“小写金额转大写”功能,将数字一键转换为英文(支持货币格式或纯文字),以及 EUR、GBP、JPY 等数十种其他语言和货币。
如果您正在寻找一种无需编码、用户友好且多功能的解决方案来在 Excel 中转换小写金额转大写,Kutools for Excel 提供了专用的“小写金额转大写”功能,支持:
- 英语(USD、GBP、EUR 等)
- 数十种其他语言和货币(例如日元、印度卢比、人民币)
- 货币格式或纯文字(例如“一百二十三”而非“一百二十三美元”)
使用步骤:
- 请选择包含待转换数字的单元格。
- 选择“Kutools”>“内容”>“小写金额转大写”。
- 在“数字转货币文字”对话框中,您需要:
- 选择您偏好的语言和货币格式(例如,用于 USD 的英语 – 美国)
- 单击“确定”。

可选:若希望使用纯英文数字(不含“dollars”或“cents”),请勾选“不转换为货币”。
您所选的数字将立即根据您的设置转换为对应的货币文字。
Kutools for Excel——通过 300 多款必备工具全面增强 Excel 功能,助您工作更快速、更轻松,并借助 AI 功能实现更智能的数据处理与高效办公!立即获取
反向操作:将货币文字转换为数字
如果您有一系列以英文文字书写的货币金额,例如:
并希望将其转换为 Excel 中的实际数值(例如 123.45),可按以下方式使用自定义 VBA 用户自定义函数(UDF):

步骤 1:打开 VBA 编辑器并插入 VBA 代码
- 打开您的 Excel 工作表。
- 按下“Alt”+“F11”,即可打开“Microsoft Visual Basic for Applications (VBA)”编辑器。
- 在 VBA 编辑器中,单击“插入”>“模块”。
- 将以下 VBA 代码复制并粘贴到空白模块窗口中:
Function WordsToNumber(ByVal Txt As String) As Double 'Updated by Extendoffice Dim x As Object: Set x = CreateObject("Scripting.Dictionary") Dim units, tens, specials Dim part As String, parts() As String Dim total As Double, partial As Double, multiplier As Double Dim i As Long, word As String Txt = LCase(Trim(Txt)) Txt = Replace(Txt, ",", "") Txt = Replace(Txt, "-", " ") Txt = Replace(Txt, " and ", " ") Txt = Replace(Txt, " ", " ") ' Setup basic number words x.Add "zero", 0: x.Add "one", 1: x.Add "two", 2: x.Add "three", 3 x.Add "four", 4: x.Add "five", 5: x.Add "six", 6: x.Add "seven", 7 x.Add "eight", 8: x.Add "nine", 9: x.Add "ten", 10: x.Add "eleven", 11 x.Add "twelve", 12: x.Add "thirteen", 13: x.Add "fourteen", 14 x.Add "fifteen", 15: x.Add "sixteen", 16: x.Add "seventeen", 17 x.Add "eighteen", 18: x.Add "nineteen", 19: x.Add "twenty", 20 x.Add "thirty", 30: x.Add "forty", 40: x.Add "fifty", 50 x.Add "sixty", 60: x.Add "seventy", 70: x.Add "eighty", 80 x.Add "ninety", 90: x.Add "hundred", 100: x.Add "thousand", 1000 x.Add "million", 1000000: x.Add "billion", 1000000000 Dim dollarPart As String, centPart As String Dim dollarValue As Double, centValue As Double ' Split into dollars and cents If InStr(Txt, "dollar") > 0 Then dollarPart = Trim(Split(Txt, "dollar")(0)) End If If InStr(Txt, "cent") > 0 Then centPart = Trim(Split(Txt, "cent")(0)) If InStr(centPart, "dollar") > 0 Then centPart = Trim(Split(centPart, "dollar")(1)) End If End If dollarValue = ParseWordsToNumber(dollarPart, x) centValue = ParseWordsToNumber(centPart, x) WordsToNumber = dollarValue + centValue / 100 End Function Private Function ParseWordsToNumber(ByVal Txt As String, x As Object) As Double Dim parts() As String: parts = Split(Txt, " ") Dim total As Double, current As Double Dim i As Long, val As Double For i = 0 To UBound(parts) If x.exists(parts(i)) Then val = x(parts(i)) Select Case val Case 100 If current = 0 Then current = 1 current = current * val Case Is >= 1000 If current = 0 Then current = 1 total = total + current * val current = 0 Case Else current = current + val End Select End If Next i total = total + current ParseWordsToNumber = total End Function
步骤 2:在工作表中应用函数
- 按 Alt + Q 即可返回 Excel。
- 在任意空白单元格中输入此公式,然后按“Enter”键。向下拖动填充柄,即可快速获取其余结果。=WordsToNumber(A2)

结论
将小写金额转大写(或将文字转回数字)并非 Excel 原生支持的功能,但本指南已展示:根据您的需求,有多种实用的解决方案:
- Microsoft 365 用户可借助现代内置函数(如 TRANSLATE),通过公式将货币金额转换为英文单词,尤其适用于采用“主单位 + 辅单位”结构的货币。
- VBA 用户自定义函数在将小写金额转换为大写,以及将货币文字反向转换为数值方面提供了更高的灵活性。然而,这类函数涉及宏相关的安全风险,更适合熟悉编码的用户使用。
- Kutools for Excel 提供了最简便、功能强大且支持多语言的选项——无需公式或编码,即可轻松应对数十种货币与语言。
- 若需将文字反向转换为数字,VBA 解决方案能有效填补这一空白,尽管可能需要进行清理(例如删除逗号)以确保结果准确无误。
无论您是在准备财务文件、自动化打印支票,还是仅希望提升数据呈现效果,选择合适的方法都能助您获得专业且精准的输出。
最佳办公效率工具
| 🤖 | KUTOOLS AI 助手:基于以下内容革新数据分析:智能执行 | 生成代码| 创建自定义公式 | 数据分析及生成图表| 调用 Kutools Functions…… |
| 热门功能:查找、高亮或标记重复项 | 删除空白行 | 合并列或单元格且不丢失数据 | 不使用公式的四舍五入…… | |
| 高级 LOOKUP:多条件 VLookup | 多值 VLookup | 跨多工作表 VLookup | 模糊查找…… | |
| 高级下拉列表:快速创建下拉列表 | 级联下拉列表 | 多选下拉列表…… | |
| 列管理器:添加指定数量的列|移动列|切换隐藏列的可见性状态|比较区域与列…… | |
| 特色功能:网格聚焦 | 设计视图 |增强编辑栏 | 工作簿和表管理器 | 资源库(自动文本)| 日期提取 | 汇总工作表 | 加密/解密单元格 | 按列表发送邮件 | 超级筛选 | 特殊筛选(筛选粗体单元格/斜体/删除线……) ...... | |
| 精选 15 工具集:12 文本工具(添加文本,删除特定字符,……)| 50+ 图表 类型(甘特图,……)| 40+ 实用公式(基于生日计算年龄,……)| 19 插入工具(插入二维码,从路径插入图片,……)| 12 转换工具(小写金额转大写,汇率转换,……)| 7 合并和拆分工具(高级合并行,分割单元格,……)|……更多 |
使用 Kutools for Excel 大幅提升您的 Excel 技能,体验前所未有的高效。Kutools for Excel 提供 300 多项高级功能,助您提升生产力、节省时间。立即点击此处,获取您最需要的功能……
Office Tab 为 Office 带来标签式界面,让您的工作更轻松
- 在 Word、Excel、PowerPoint、Publisher、Access、Visio 和 Project 中启用标签式编辑和阅读。
- 在同一个窗口的新标签页中打开并创建多个文档,而非在新窗口中。
- 将您的工作效率提升 50%,每天减少数百次鼠标点击!
所有 Kutools 插件,一个安装程序
Kutools for Office 套件捆绑了适用于 Excel、Word、Outlook 和 PowerPoint 的插件以及 Office Tab Pro,非常适合需要跨多个 Office 应用高效协作的团队。
- 一体化套件— Excel、Word、Outlook 和 PowerPoint 插件 + Office Tab Pro
- 一个安装程序,一个许可证— 几分钟内完成设置(支持 MSI)
- 协同效果更佳— 在多个 Office 应用中实现高效协同
- 30 天全功能试用— 无需注册,无需信用卡
- 超值之选— 比单独购买插件更省钱






