2014-10-01 88 views
1

以下文本是我的示例數據集。我有一個字符串日期的筆記。我需要將以下字符串中的所有日期從mm/dd/yyyy格式轉換爲yyyy-mm-dd。所有的數據是在一個單元串Excel:重新格式化字符串中的所有日期值

單元格內容:

「===註釋===

2013年2月7日

輸入音符這裏

「===註釋===

2013年2月12日

輸入音符這裏

'===註釋===

2013年2月14日

輸入音符這裏

期望中的單元格內容:

' === NOTE ===

2013-02-07

輸入音符這裏

'===註釋===

2013年2月12日

輸入音符這裏

' ===註釋===

2013-02-14

在此處輸入備註

我已經試過公式來挑出日期字符串,甚至重新格式化它們,但它只會挑出字符串中的第一個日期。我需要搜索並重新格式化字符串中所有日期的內容。

我可以使用以下挑選出的第一個日期

= IFERROR(0 + MID(AB2,SEARCH( 「??/??/????」,AB2),10) , 「」)

然後,我可以使用以下方法來改變格式

= TEXT(AC1, 「YYYY-MM-DD」)

然而,只挑出第一個日期,它甚至沒有取代它。任何幫助是極大的讚賞。

+0

首先選擇整列並點擊右鍵選擇'設置單元格格式'並從列出的類別中選擇TEXT。 – Gopal00005 2014-10-01 05:59:25

+0

順便問一下哪個版本的Excel? – Gopal00005 2014-10-01 06:01:34

回答

0

這對標準的Excel函數來說是不可能的。但是,您可以使用VBA和正則表達式來完成此操作。創建一個新模塊,並添加以下代碼:

Function ConvertDates(rng As Range) 
    If (rng.Rows.Count > 1 Or rng.Columns.Count > 1) Then 
     ConvertDates = CVErr(xlErrRef) 
    End If 

    Dim regex As Object 
    Set regex = CreateObject("vbscript.regexp") 
    regex.Global = True 
    regex.Pattern = "([\d]{2})/([\d]{2})/([\d]{4})" 
    ConvertDates = regex.Replace(rng.Value, "$3-$1-$2") 
End Function 

然後,在工作表中的不同的單元格,請使用以下功能:

=ConvertDates(A1) 
+0

完美,這工作就像一個魅力。謝謝! – Derek 2014-10-01 13:12:36