KutoolsforOffice — 一套方案,五大工具。事半功倍。三月特賣:20% 折扣

在 Excel 中將數字轉換為文字——完整指南

作者Xiaoyang修改日期

將數字轉換為文字形式常見於財務報表、法律文件、發票或支票等場合。雖然 Excel 本身未內建此功能,但有多種可靠方法可實現,包括 Microsoft 365 的內建函數、VBA 自訂函數,以及功能強大的第三方增益集。本完整指南將逐一介紹這些方法,說明各自的優點與限制,協助您根據實際需求選擇最適合的方案。

顯示在 Excel 中將數字轉換為文字的螢幕截圖

在 Excel 中轉換金額轉大寫的方法

本節介紹三種在 Excel 中將貨幣金額轉換為大寫的有效方法,請根據您所使用的 Excel 版本與實際需求,選擇最適合的方案。


方法 1:使用全新內建函數(僅限 Microsoft 365)

若您使用的是 Microsoft 365 Excel,即可善用全新的 TRANSLATE 函數,透過創意公式組合,輕鬆將貨幣金額轉換為大寫文字。

如下方截圖所示,若要將 A2:A5 範圍內的貨幣數字轉換為文字,只需套用下列公式即可輕鬆完成。

  1. 選取一個空白儲存格(例如 B2),輸入下列公式:
    =PROPER(SUBSTITUTE(SUBSTITUTE(LOWER(TRANSLATE(BAHTTEXT(B9),"th","en")),"baht","dollars"),"satang","cents"))
  2. 按下「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 程式碼

  1. 開啟您要使用此功能的工作表。
  2. 按下「Alt」+「F11」,即可開啟「Microsoft Visual Basic for Applications」視窗。
  3. 在編輯器中,點選「插入」>「模組」,然後貼上以下 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
    顯示程式碼編輯器的螢幕截圖
  4. 按下「Alt」+「Q」即可返回工作表。

步驟 2:套用函數

  1. 在儲存格中輸入下方公式,並按下「Enter」鍵。
    =SpellNumberToEnglish(A2)
  2. 接著拖曳填滿控點,視需要套用至其他列。您的數字現在會以文字形式呈現,例如:
    顯示使用者定義函數及其結果的螢幕截圖

適用於其他貨幣:

此函數會輸出「Dollar(s)」與「Cent(s)」,這些值已硬式編碼,僅適用於美元(USD)。若您希望將數字轉換為其他貨幣(例如英鎊),請手動修改下列程式碼行中的主單位與次單位。

顯示如何修改程式碼以適用於其他貨幣的螢幕截圖

將活頁簿儲存為啟用巨集的檔案

預設情況下,除非將活頁簿儲存為啟用巨集的活頁簿,否則 VBA 函數將無法保留:

  1. 按下「Ctrl」+「S」即可儲存。
  2. 並在關於巨集的彈出訊息中點選「返回」按鈕。
    注意:若彈出視窗僅顯示「是」、「否」和「說明」,請點選「否」。
    顯示如何修改程式碼以適用於其他貨幣的螢幕截圖
  3. 在「另存新檔」視窗中。
    1. 選擇儲存位置。
    2. 在「指定保存格式」中選取「Excel 啟用巨集活頁簿(*.xlsm)」。
    3. 點擊「儲存」。
      顯示如何修改程式碼以適用於其他貨幣的螢幕截圖

SpellNumberToEnglish VBA 函數的限制

不支援多國語言
  • 此函數僅能輸出英文結果。
  • 不支援其他語言(例如法文、德文),亦無法處理貨幣符號置於數字前的格式(例如印度英文中的「Rupees One Hundred」)。
未以標準 Excel 文件格式儲存
  • 若您未將活頁簿儲存為啟用巨集的格式(.xlsm),關閉 Excel 時此函數將遺失。
  • 若儲存為一般的 .xlsx 檔案,所有 VBA 程式碼都會被移除。
共用時會出現巨集安全警告
  • 當您將啟用巨集的檔案傳送給他人時,對方開啟檔案會觸發「安全性警告-巨集已被停用」的提示。
  • 部分使用者可能因擔憂潛在的安全風險而不願啟用巨集,因而選擇放棄使用該檔案。
自訂時需具備 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」)

使用步驟:

  1. 選取包含您要轉換數字的儲存格。
  2. 選取「Kutools」>「內容」>「金額轉大寫」。
  3. 在「數字轉換為貨幣文字」對話方塊中,您需要:
    1. 選擇您偏好的語言與貨幣格式(例如:英文-美國適用於 USD)
    2. 點擊「確定」。
      顯示將數字轉換為貨幣文字對話框的螢幕截圖

選項:若您希望使用純英文數字(不含「dollars」或「cents」),請勾選「不轉換為貨幣」。

您所選取的數字將依設定自動轉換為對應的貨幣文字。

Kutools for Excel-透過超過 300 項必備工具全面強化 Excel,讓您的工作更快速、更輕鬆,並運用 AI 功能實現更聰明的資料處理與高效生產力!立即取得


反向操作:將貨幣文字轉換為數字

若您有一份以英文文字書寫的貨幣金額清單,例如:

「一百二十三美元四十五美分」

若希望將其轉換為 Excel 中的實際數字(例如 123.45),可依照下列方式使用自訂 VBA 使用者定義函數(UDF)。

步驟 1:開啟 VBA 編輯器並插入 VBA 程式碼

  1. 開啟您的 Excel 工作表。
  2. 按下「Alt」+「F11」,即可開啟「Microsoft Visual Basic for Applications (VBA)」編輯器。
  3. 在 VBA 編輯器中,按一下「插入」>「模組」。
  4. 將以下 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:在工作表中套用函數

  1. 按下「Alt」+「Q」即可返回 Excel。
  2. 在任一空白儲存格中輸入此公式並按下「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—支援英文、西班牙文、德文、法文、中文及另外 40+ 種語言!

運用 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 應用程式協作的團隊使用!

ExcelWordOutlookTabsPowerPoint
  • 全能套件— 包含 Excel、Word、Outlook 與 PowerPoint 增益集,以及 Office Tab Pro
  • 一個安裝程式,一個授權— 數分鐘內即可完成設定(支援 MSI)
  • 協同運作更出色— 在多個 Office 應用程式間實現流暢的生產力體驗
  • 30 天完整功能試用— 無需註冊,無需信用卡
  • 超值之選— 比單獨購買各增益集更省費用