在 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 等)
- 數十種其他語言與貨幣(例如日圓、印度盧比、人民幣)
- 貨幣格式或純文字(例如「One Hundred Twenty-Three」而非「One Hundred Twenty-Three Dollars」)
使用步驟:
- 選取包含您要轉換數字的儲存格。
- 選取「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 解決方案能有效彌補此缺口,但可能需先進行清理(例如移除逗號),才能確保結果準確無誤。
無論您是在準備財務文件、自動化支票列印,還是單純提升資料呈現效果,選擇合適的方法都能助您打造專業且精準的成果。
最佳 Office 生產力工具
| 🤖 | KUTOOLS AI 助手:基於以下內容徹底革新數據分析:智慧執行 | 產生程式碼| 建立自訂公式 | 分析資料並產生圖表| 呼叫增強函數…… |
| 熱門功能:尋找、醒目提示或標記重複值 | 刪除空白行 | 合併列或儲存格而不遺失資料 | 不使用公式的四捨五入…… | |
| 高級 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 中啟用分頁式編輯與閱讀功能,以及 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 天完整功能試用— 無需註冊,無需信用卡
- 超值之選— 比單獨購買各增益集更省費用






