【问题标题】:Excel: Reformat all date values in a stringExcel:格式化字符串中的所有日期值
【发布时间】:2014-11-25 21:10:02
【问题描述】:

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

单元格内容:

'=== 注意===

02/07/2013

在此处输入注释

'=== 注意===

2013 年 2 月 12 日

在此处输入注释

'=== 注意===

2013 年 2 月 14 日

在此处输入注释

所需的单元格内容:

'=== 注意===

2013-02-07

在此处输入注释

'=== 注意===

2013-02-12

在此处输入注释

'=== 注意===

2013-02-14

在此处输入注释

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

我可以用下面的来挑出第一次约会

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

那我可以用下面的来改变格式

=TEXT(AC1,"yyyy-mm-dd")

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

【问题讨论】:

  • 先选中整列右击选择format cells,从列出的类别中选择TEXT。
  • 请问是哪个版本的Excel?

标签: string excel date


【解决方案1】:

这对于标准 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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多