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

如何在Excel中快速將日期轉換為單詞?

通常,我們通常在Excel中將日期轉換為其他日期格式或數字,但是您是否遇到過將日期轉換為英語單詞的問題,如下圖所示? 實際上,沒有內置功能可以處理它,而是VBA代碼。
doc日期到單詞1

使用定義的函數將日期轉換為單詞


使用定義的函數將日期轉換為單詞

這是一個宏代碼,可以幫助您將日期轉換為單詞。

1.啟用您使用的工作表,然後按 Alt + F11鍵 打開鑰匙 Microsoft Visual Basic for Applications 窗口。

2。 點擊 插入 > 模塊 並將以下代碼粘貼到腳本中。

VBA:將日期轉換為單詞

Function DateToWords(ByVal xRgVal As Date) As String
'UpdatebyExtendoffice20170926
    Dim xYear As String
    Dim Hundreds As String
    Dim Decades As String
    Dim xTensArr As Variant
    Dim xOrdArr As Variant
    Dim xCardArr As Variant
    xOrdArr = Array("First", "Second", "Third", _
                   "Fourth", "Fifth", "Sixth", _
                   "Seventh", "Eighth", "Nineth", _
                   "Tenth", "Eleventh", "Twelfth", _
                   "Thirteenth", "Fourteenth", _
                   "Fifteenth", "Sixteenth", _
                   "Seventeenth", "Eighteenth", _
                   "Nineteenth", "Twentieth", _
                   "Twenty-first", "Twenty-second", _
                   "Twenty-third", "Twenty-fourth", _
                   "Twenty-fifth", "Twenty-sixth", _
                   "Twenty-seventh", "Twenty-eighth", _
                   "Twenty-nineth", "Thirtieth", _
                   "Thirty-first")
    xCardArr = Array("", "One", "Two", "Three", "Four", _
                   "Five", "Six", "Seven", "Eight", "Nine", _
                   "Ten", "Eleven", "Twelve", "Thirteen", _
                   "Fourteen", "Fifteen", "Sixteen", _
                   "Seventeen", "Eighteen", "Nineteen")
    xTensArr = Array("Twenty", "Thirty", "Forty", "Fifty", _
               "Sixty", "Seventy", "Eighty", "Ninety")
    xYear = CStr(Year(xRgVal))
    Decades = Mid$(xYear, 3)
    If CInt(Decades) < 20 Then
        Decades = xCardArr(CInt(Decades))
    Else
        Decades = xTensArr(CInt(Left$(Decades, 1)) - 2) & "-" & _
                xCardArr(CInt(Right$(Decades, 1)))
    End If
        Hundreds = Mid$(xYear, 2, 1)
    If CInt(Hundreds) Then
        Hundreds = xCardArr(CInt(Hundreds)) & " Hundred "
    Else
        Hundreds = ""
    End If
    DateToWords = xOrdArr(Day(xRgVal) - 1) & _
                  Format$(xRgVal, " mmmm ") & _
                  xCardArr(CInt(Left$(xYear, 1))) & _
                  " Thousand " & Hundreds & Decades
End Function

doc日期到單詞2

3.保存代碼並返回到工作表,選擇一個要在其中輸出結果的單元格,鍵入此公式 = DateToWords(A1) (A1是您使用的日期),按 Enter 鍵,然後將自動填充手柄拖到所需的單元格上。 看截圖:
doc日期到單詞3


數字到單詞

doc拼出數字1

相關文章:


最佳辦公效率工具

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底部
按評論排序
留言 (23)
還沒有評分。 成為第一位評論!
網站主持人對此評論進行了最小化
datetowords 公式不適用於所有 exall 文件
網站主持人對此評論進行了最小化
對不起,你能告訴我哪種類型的 excel 文件不能工作嗎?
網站主持人對此評論進行了最小化
這在以 20 結尾的 XNUMX 多年後加上一個連字符。
網站主持人對此評論進行了最小化
修復了 20、30、40 等之後的連字符。

在“If CInt(Decades) < 20 Then
十年 = xCardArr(CInt(Decades))"

ElseIf CInt(Decades) Like "*0" Then
十年 = xTensArr(CInt(Left$(Decades, 1)) - 2)
網站主持人對此評論進行了最小化
好吧,它的工作,很好,但是格式有一些問題,因為 1975 (20) 不是 (2011),但是在 XNUMX+ 的情況下,格式是正確的,因為 XNUMX (XNUMX) ),還有第二個問題是(單數/複數),這裡(一千,兩千,一百,九百),請解決這些,謝謝
網站主持人對此評論進行了最小化
優秀的...
網站主持人對此評論進行了最小化
它的工作很好,但我想要 90 年代的“一千九百”而不是“一千九百”......謝謝!
網站主持人對此評論進行了最小化
對不起,zia khan,我不是你的意思,將 90 轉換為 XNUMX。 VBA 只能將日期轉換為單詞,Split Out Number 實用程序將數字轉換為英文貨幣單詞
網站主持人對此評論進行了最小化
“一千九百”是英文口語,其實是錯的。
網站主持人對此評論進行了最小化
您好,我們也可以在 word docx 中執行此操作嗎?
網站主持人對此評論進行了最小化
古吉拉特語的約會日期可用嗎? 請回答我。 9427909038
網站主持人對此評論進行了最小化
我認為它不適用於英語以外的其他語言。
網站主持人對此評論進行了最小化
如何在 vb6 中將此代碼用於文本框
網站主持人對此評論進行了最小化
先生/女士

這對我來說是非常有用的。

真的很神奇,並在一分鐘內幫助解決了問題。

感謝您上傳此文檔。 非常好
網站主持人對此評論進行了最小化
謝謝你幫助我。 在用word轉換出生日期非常有用
網站主持人對此評論進行了最小化
我想在輸出中添加文本,例如,1958 轉換為一千一千九百五十八,我希望它說一千一千九百 五十八。 有人可以給我一個例子來說明我該怎麼做嗎?
網站主持人對此評論進行了最小化
它給出了#NAME? 錯誤
網站主持人對此評論進行了最小化
آپ کا بووت و
網站主持人對此評論進行了最小化
07 年 08 月 1998 日 XNUMX 月 XNUMX 日 XNUMX
我需要以大寫格式輸入單詞,但我在 excel 中使用了這個 micros 我得到了這個
07/08/1998 七八一千九百九十八 這沒用
網站主持人對此評論進行了最小化
嗨,MAX,我已經修改了 VBA,請嘗試讓我知道它是否有效。 謝謝。
Function DateToWords(ByVal xRgVal As Date) As String
'UpdatebyExtendoffice20170926
    Dim xYear As String
    Dim Decades As String
    Dim years As String
    Dim xTensArr As Variant
    Dim xyearArr As Variant
    Dim xOrdArr As Variant
    Dim xCardArr As Variant
    xOrdArr = Array("First", "Second", "Third", _
                   "Fourth", "Fifth", "Sixth", _
                   "Seventh", "Eighth", "Nineth", _
                   "Tenth", "Eleventh", "Twelfth", _
                   "Thirteenth", "Fourteenth", _
                   "Fifteenth", "Sixteenth", _
                   "Seventeenth", "Eighteenth", _
                   "Nineteenth", "Twentieth", _
                   "Twenty-first", "Twenty-second", _
                   "Twenty-third", "Twenty-fourth", _
                   "Twenty-fifth", "Twenty-sixth", _
                   "Twenty-seventh", "Twenty-eighth", _
                   "Twenty-nineth", "Thirtieth", _
                   "Thirty-first")
    xCardArr = Array("", "One", "Two", "Three", "Four", _
                   "Five", "Six", "Seven", "Eight", "Nine", _
                   "Ten", "Eleven", "Twelve", "Thirteen", _
                   "Fourteen", "Fifteen", "Sixteen", _
                   "Seventeen", "Eighteen", "Nineteen")
    xTensArr = Array("Twenty", "Thirty", "Forty", "Fifty", _
               "Sixty", "Seventy", "Eighty", "Ninety")
    xYear = CStr(Year(xRgVal))
    
    
      xyearArr = Array("", "One", "Two", "Three", "Four", _
                   "Five", "Six", "Seven", "Eight", "Nine", _
                   "Ten", "Eleven", "Twelve", "Thirteen", _
                   "Fourteen", "Fifteen", "Sixteen", _
                   "Seventeen", "Eighteen", "Nineteen", "Twenty", "Thirty", "Forty", "Fifty", _
               "Sixty", "Seventy", "Eighty", "Ninety")

    years = xyearArr(CInt(Year(xRgVal) / 100)) & " Hundred"
    
    Decades = Mid$(xYear, 3)
    If CInt(Decades) < 20 Then
        Decades = xCardArr(CInt(Decades))
    Else
        Decades = xTensArr(CInt(Left$(Decades, 1)) - 2) & "-" & _
                xCardArr(CInt(Right$(Decades, 1)))
    End If

    DateToWords = UCase(xOrdArr(Day(xRgVal) - 1) & _
                  Format$(xRgVal, " mmmm ") & _
                  years & " " & Decades)
End Function

網站主持人對此評論進行了最小化
07/08/1998 八月七日二百九十八
在這個vba中有錯誤
convert it1998 但它顯示 TWENTY HUNDRED NINETY-EIGHT
網站主持人對此評論進行了最小化
嗨,試試這個 vba:
Function DateToWords(ByVal xRgVal As Date) As String
'UpdatebyExtendoffice20170926
    Dim xYear As String
    Dim Decades As String
    Dim years As String
    Dim xTensArr As Variant
    Dim xyearArr As Variant
    Dim xOrdArr As Variant
    Dim xCardArr As Variant
    xOrdArr = Array("First", "Second", "Third", _
                   "Fourth", "Fifth", "Sixth", _
                   "Seventh", "Eighth", "Nineth", _
                   "Tenth", "Eleventh", "Twelfth", _
                   "Thirteenth", "Fourteenth", _
                   "Fifteenth", "Sixteenth", _
                   "Seventeenth", "Eighteenth", _
                   "Nineteenth", "Twentieth", _
                   "Twenty-first", "Twenty-second", _
                   "Twenty-third", "Twenty-fourth", _
                   "Twenty-fifth", "Twenty-sixth", _
                   "Twenty-seventh", "Twenty-eighth", _
                   "Twenty-nineth", "Thirtieth", _
                   "Thirty-first")
    xCardArr = Array("", "One", "Two", "Three", "Four", _
                   "Five", "Six", "Seven", "Eight", "Nine", _
                   "Ten", "Eleven", "Twelve", "Thirteen", _
                   "Fourteen", "Fifteen", "Sixteen", _
                   "Seventeen", "Eighteen", "Nineteen")
    xTensArr = Array("Twenty", "Thirty", "Forty", "Fifty", _
               "Sixty", "Seventy", "Eighty", "Ninety")
    xYear = CStr(Year(xRgVal))
    
    
      xyearArr = Array("", "One", "Two", "Three", "Four", _
                   "Five", "Six", "Seven", "Eight", "Nine", _
                   "Ten", "Eleven", "Twelve", "Thirteen", _
                   "Fourteen", "Fifteen", "Sixteen", _
                   "Seventeen", "Eighteen", "Nineteen", "Twenty", "Thirty", "Forty", "Fifty", _
               "Sixty", "Seventy", "Eighty", "Ninety")

    years = xyearArr(Fix(Year(xRgVal) / 100)) & " Hundred"
    
    Decades = Mid$(xYear, 3)
    If CInt(Decades) < 20 Then
        Decades = xCardArr(CInt(Decades))
    Else
        Decades = xTensArr(CInt(Left$(Decades, 1)) - 2) & "-" & _
                xCardArr(CInt(Right$(Decades, 1)))
    End If

    DateToWords = UCase(xOrdArr(Day(xRgVal) - 1) & _
                  Format$(xRgVal, " mmmm ") & _
                  years & " " & Decades)
End Function

網站主持人對此評論進行了最小化
07/08/1998 八月七日二百九十八
在這個vba中有錯誤
convert it1998 但它顯示 TWENTY HUNDRED NINETY-EIGHT
這裡還沒有評論
留下你的意見
以訪客身份發帖
×
評價此帖子:
0   字符
推薦地點

關注我們

版權所有©2009 - 萬維網。extendoffice.com。 | 版權所有。 供電 ExtendOffice。 |
Microsoft和Office徽標是Microsoft Corporation在美國和/或其他國家的商標或註冊商標。
受Sectigo SSL保護