Excel:重新格式化字符串中的所有日期值

时间:2014-10-01 04:57:42

标签: string excel date

下面的文字是我的示例数据集。我在字符串中注明了日期。我需要将下面字符串中的所有日期从mm / dd / yyyy格式转换为yyyy-mm-dd。所有数据都是单个单元格中的字符串

细胞内容:

  

' ===注意===

     

02/07/2013

     

在此输入备注

     

' ===注意===

     

02/12/2013

     

在此输入备注

     

' ===注意===

     

02/14/2013

     

在此输入备注

所需的细胞内容:

  

' ===注意===

     

2013年2月7日

     

在此输入备注

     

' ===注意===

     

2013年2月12日

     

在此输入备注

     

' ===注意===

     

2013年2月14日

     

在此输入备注

我已经尝试过公式来挑选日期字符串甚至重新格式化它们,但它只会选出字符串中的第一个日期。我需要搜索并重新格式化字符串中所有日期的内容。

我可以使用以下内容来挑选第一个日期

  

= IFERROR(0 + MID(AB2,SEARCH(" ++ / ++ / ????",AB2),10),"&#34)

然后我可以使用以下内容更改格式

  

= TEXT(AC1," YYYY-MM-DD&#34)

但是,这只会选出第一个日期,甚至不会取代它。非常感谢任何帮助。

1 个答案:

答案 0 :(得分: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)