识别文本文件中的日期日期格式不正确

时间:2016-08-23 14:48:58

标签: excel date extract

I need to extract the date from C2 and find the difference between the date in c2 and A1

日期格式为" 2015年7月18日",有什么想法吗?编辑数据库每个单元格有不同的文本量。是否存在这个问题,以便我可以将公式应用于每个细胞并拉出日/月/年?

EDIT so the functions listed in the answer don't work on varied text

1 个答案:

答案 0 :(得分:1)

您将需要经历一系列字符串操作和日期时间功能。让我们假设你的字符串在C2单元格中。为了做到这一点,我们将从最大的单位(年)到最小的单位(天)工作。你可以按任何顺序进行,因为它将被集中到一次公式中,但是对于步骤的细分,它有利于订购。

步骤1)推出年份

=MID(C2,FIND(" ",C2,FIND(" ",C2)+1)+1,4)

这将为我们提供第二个空格之后的字符串的最后4个字符,在这种情况下是年份。

步骤2)拉出月份

=MONTH(DATEVALUE(MID(C2,2,3)&"-"&1))

查看第二个字符并拉出长度为3个字符的字符串,即您的月份。然后通过向其添加 - 和数字1,将其转换为excel倾向于识别为日期缩写形式的格式。所以在你的情况下,如果看起来像Jul-1。 Datevalue将此转换为excel日期序列,然后我们将其拉回并从您的案例中获取月份7

如果上述公式不适合您,可能是由于区域设置。如果是这种情况,您可以使用以下内容:

=MATCH(MID(C2,2,3),{"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"},0)

如果您使用此替代公式,请务必相应地调整最终等式。

步骤3)拉出一天

=TRIM(MID(C2,FIND(" ",C2)+1,2))

所以上面的公式找到第一个空格,然后开始拉,然后接下来的2个字符。现在因为我不知道这个月的第一个是01还是只有1,它可能会在1之后抓住空格。修剪功能会删除多余的空格。

步骤4)建立日期

excel中的DATE函数需要YEAR,MONTH和DAY,并将这些值转换为excel日期序列。在这种情况下,我们将转换:

=DATE(year,month,day)
通过从上面代入我们的方程式来

=DATE(MID(C2,FIND(" ",C2,FIND(" ",C2)+1)+1,4),MONTH(DATEVALUE(MID(C2,2,3)&"-"&1)),TRIM(MID(C2,FIND(" ",C2)+1,2)))

最后一步是确保您的单元格格式化为日期,而不是常规或其他格式,这将导致日期以整数格式显示。

现在假设您在A1中的日期是Excel格式,您只需将A1-添加到最后一个公式的前面即可:

=A1-DATE(MID(C2,FIND(" ",C2,FIND(" ",C2)+1)+1,4),MONTH(DATEVALUE(MID(C2,2,3)&"-"&1)),TRIM(MID(C2,FIND(" ",C2)+1,2)))

现在,如果A1也在C2公式的引号中,重复公式以从C2中剥离日期,但使用A1作为参考,并将其替换为最后一个公式中的A1给出:

=DATE(MID(A1,FIND(" ",A1,FIND(" ",A1)+1)+1,4),MONTH(DATEVALUE(MID(A1,2,3)&"-"&1)),TRIM(MID(A1,FIND(" ",A1)+1,2)))-DATE(MID(C2,FIND(" ",C2,FIND(" ",C2)+1)+1,4),MONTH(DATEVALUE(MID(C2,2,3)&"-"&1)),TRIM(MID(C2,FIND(" ",C2)+1,2)))

使用的公式

文本/字符串函数

日期/时间函数