2014-10-01 90 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