在Excel中将文本转换为日期
目前,我使用一个查询从数据库导出了一些数据,其中“comment”列的每一行都以格式为MM/DD/YY的日期开始 我使用在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(
=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
- 如果有错误,只需使用“;”左边的部分即可李>
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
- 如果有错误,只需使用“;”左边的部分即可李>
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”)
。不过,到那时,这个公式已经变得相当混乱,因此另一种选择可能更好。