在Excel中将文本转换为日期

在Excel中将文本转换为日期,excel,excel-formula,Excel,Excel Formula,目前,我使用一个查询从数据库导出了一些数据,其中“comment”列的每一行都以格式为MM/DD/YY的日期开始 我使用=LEFT(TEXT,8)函数仅提取日期,但一些日期的格式不一致,因此我们可能有一些是M/D/YY,其中月份或日期不是两位数,这将包括一个“;”作为分隔符,因为它少于8个字符 有没有一种方法可以将文本格式化为“;”是否排除在外?这样我可以对数据进行排序。假设您的文本如下所示:;1/;2/13或1/2/13;;或2013年1月2日 您可以这样使用替代品: =SUBSTITUTE(

目前,我使用一个查询从数据库导出了一些数据,其中“comment”列的每一行都以格式为MM/DD/YY的日期开始

我使用
=LEFT(TEXT,8)
函数仅提取日期,但一些日期的格式不一致,因此我们可能有一些是M/D/YY,其中月份或日期不是两位数,这将包括一个“;”作为分隔符,因为它少于8个字符


有没有一种方法可以将文本格式化为“;”是否排除在外?这样我可以对数据进行排序。

假设您的文本如下所示:;1/;2/13或1/2/13;;或2013年1月2日

您可以这样使用替代品:

=SUBSTITUTE(A1,";","")
结果将是:


假设您的文本如下所示:;1/;2/13或1/2/13;;或2013年1月2日

您可以这样使用替代品:

=SUBSTITUTE(A1,";","")
结果将是:


我认为
DATEVALUE
函数可以满足您的大部分需求。它采用多种不同的日期格式(M/D/YYYY、MM/DD/YYYY等),并将其转换为excel日期(即自1900年1月1日起的天数)

下面的公式是:

  • 如果日期是干净的,则只需应用
    DATEVALUE
    函数即可
  • 如果有错误,只需使用“;”左边的部分即可
假设2013年9月1日为A2单元:

Input Data      Sortable Excel Date
----------      -------------------
9/1/2013;       =IFERROR(DATEVALUE(A2),DATEVALUE(LEFT(A2,FIND(";",A2)-1)))
09/2/2013;      9/2/2013
10/1/2013;      10/1/2013
10/10/2013      10/10/2013

我制作了一个live Excel示例。

我认为
DATEVALUE
函数可以满足您的大部分需求。它采用多种不同的日期格式(M/D/YYYY、MM/DD/YYYY等),并将其转换为excel日期(即自1900年1月1日起的天数)

下面的公式是:

  • 如果日期是干净的,则只需应用
    DATEVALUE
    函数即可
  • 如果有错误,只需使用“;”左边的部分即可
假设2013年9月1日为A2单元:

Input Data      Sortable Excel Date
----------      -------------------
9/1/2013;       =IFERROR(DATEVALUE(A2),DATEVALUE(LEFT(A2,FIND(";",A2)-1)))
09/2/2013;      9/2/2013
10/1/2013;      10/1/2013
10/10/2013      10/10/2013

我制作了一个live Excel示例。

因此,如果日期是A2的前6、7或8个字符,则可以使用此公式获得日期

=查找(10^10,左(A2,{6,7,8})+0)

以所需的日期格式设置结果单元格的格式


由于结果是一个有效的日期,您可以像对数字排序一样对其进行排序,因此,如果日期是A2的前6、7或8个字符,则可以使用此公式获得日期

=查找(10^10,左(A2,{6,7,8})+0)

以所需的日期格式设置结果单元格的格式


由于结果是一个有效的日期,您可以像对数字排序一样对其进行排序

+1充分利用DateValue并包括一个实时演示。。。如果用户无法将该单元格格式化为日期,则可能不适用于该用户。i、 他们的输出是一个更大字符串的一部分。很高兴听到另一个波特兰人:-)。单元格格式为True,但您可以将
DATEVALUE
的每个实例替换为
TEXT(DATEVALUE(…),“MM/DD/YYYY”)
。不过,到那时,公式已经变得相当混乱,所以另一种选择可能更好。+1很好地利用了DateValue并包括了一个实时演示。。。如果用户无法将该单元格格式化为日期,则可能不适用于该用户。i、 他们的输出是一个更大字符串的一部分。很高兴听到另一个波特兰人:-)。单元格格式为True,但您可以将
DATEVALUE
的每个实例替换为
TEXT(DATEVALUE(…),“MM/DD/YYYY”)
。不过,到那时,这个公式已经变得相当混乱,因此另一种选择可能更好。